insert和insertOne不是函数,并且更新不创建mongo ID

时间:2018-02-19 18:13:19

标签: 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');

这是我尝试插入或插入一个

的地方
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变为空。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您正在寻找的方法是create

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

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

答案 1 :(得分:2)

你可以试试这个

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