node.js - insert 和 insertOne 不是函数并且 update 不创建 mongo ID

标签 node.js mongodb mongoose

我以为我可以阅读这个解决方案,但我看不出我做错了什么。

这是我的模型:

var mongoose      = require('mongoose');
var Schema        = mongoose.Schema;
var inspectSchema = new Schema({
    _id:                Object,     // Mongo ID
    property:           String,     // Property ID
    room:               String,     // The room Name
    item:               Array       // The Items text
});
module.exports = mongoose.model('inspectModel', inspectSchema, 'inspect');

这是我尝试插入或 insertOne 的地方

var inspectModel = require('../../models/inspectModel');
var inspectTable = mongoose.model('inspectModel');

inspectTable.insert(
    {
        "property" : inspectRecord.property,
        "room" : inspectRecord.room,
        "item" : inspectRecord.item
    }, 
function (err, res) {  
    if (err) { return reject({err:true, err:"addInspect ERROR" + err})  }
    else {
        show("=====RESOLVE addInspect=====")
        return resolve();
    }
})

我试过了

inspectTable.insert
inspectModel.insert
inspectTable.insertOne
inspectModel.insertOne

无论我总是得到什么

TypeError: inspectTable.insert is not a function

我也尝试使用 { upsert: true } 进行更新,但随后 mongo ID 变为 null。

有什么想法吗?

最佳答案

您正在寻找的方法是 create :

inspectTable.create(
    {
        "property" : inspectRecord.property,
        "room" : inspectRecord.room,
        "item" : inspectRecord.item
    }, ...

但是,您的 _id: Object 架构定义可能是错误的。只需将 _id 的任何定义保留在架构之外,它将使用默认的 ObjectId,这可能就是您想要的。

关于node.js - insert 和 insertOne 不是函数并且 update 不创建 mongo ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871951/

相关文章:

node.js - Mongoose Schema.pre insertMany 中间件

python - MongoDB中的内存错误

mongodb - 嵌入的文档 ID 在集合中是否唯一?

css - Webpack 不在 css 更改时重建,是否缺少某些设置?

javascript - 如何获取字符串路径名?

javascript - 如何在 D3 v4 中只获取我需要的东西?

mongodb - 如何使用多个目标更新多个文档

node.js - 如何更新 mongoDB 或 Mongoose 中的嵌套数组值

node.js - Mongoose For Node.js 错误对象没有方法验证

mongodb - 查询不等于 null 或空的地方