mongoose save vs insert vs create

时间:2016-07-10 10:00:14

标签: javascript node.js mongodb mongoose

使用Mongoose将文档(记录)插入MongoDB有哪些不同的方法?

我目前的尝试:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var notificationsSchema = mongoose.Schema({
    "datetime" : {
        type: Date,
        default: Date.now
    },
    "ownerId":{
        type:String
    },
    "customerId" : {
        type:String
    },
    "title" : {
        type:String
    },
    "message" : {
        type:String
    }
});

var notifications = module.exports = mongoose.model('notifications', notificationsSchema);

module.exports.saveNotification = function(notificationObj, callback){
    //notifications.insert(notificationObj); won't work
    //notifications.save(notificationObj); won't work
    notifications.create(notificationObj); //work but created duplicated document
}

任何想法为什么插入和保存在我的情况下不起作用?我试过创建,它插入2个文件而不是1.那很奇怪。

1 个答案:

答案 0 :(得分:47)

.save()是模型的实例方法,而.create()作为方法调用直接从Model调用,本质上是静态的,并将对象作为第一个参数。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var notificationSchema = mongoose.Schema({
    "datetime" : {
        type: Date,
        default: Date.now
    },
    "ownerId":{
        type:String
    },
    "customerId" : {
        type:String
    },
    "title" : {
        type:String
    },
    "message" : {
        type:String
    }
});

var Notification = mongoose.model('Notification', notificationsSchema);


function saveNotification1(data) {
    var notification = new Notification(data);
    notification.save(function (err) {
        if (err) return handleError(err);
        // saved!
    })
}

function saveNotification2(data) {
    Notification.create(data, function (err, small) {
    if (err) return handleError(err);
    // saved!
    })
}

导出您想要的任何功能。

Mongoose Docs的更多信息,或者考虑阅读Mongoose中Model原型的参考资料。