web-dev-qa-db-ja.com

マングース保存vs挿入vs作成

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
}

私の場合、挿入と保存が機能しない理由は何ですか?作成しようとしましたが、1ではなく2つのドキュメントが挿入されました。それは奇妙です。

35
Maria Jane

.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 プロトタイプの参照を読むことを検討してください。

50
Iceman