2016-07-10 25 views
15
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 
} 

Qualche idea sul perché inserire e salvare non funziona nel mio caso? Ho provato a creare, ha inserito 2 documenti invece di 1. È strano.Mangusta salva vs inserisci vs crea

+1

Non aiuta quando si pubblica lo stesso problema più volte http://stackoverflow.com/questions/38290506/mongoose-create-created-multiple-document ... – DAXaholic

+1

@DAXaholic avete qualche idea sul mio problema ? –

+0

@MariaJane cud u mostra la dichiarazione dell'oggetto passato come 'notificationObj'. – Iceman

risposta

25

Il metodo .save() è una proprietà dell'istanza del modello, mentre il .create() viene chiamato direttamente dal modello come una proprietà e prende l'oggetto come primo parametro.

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! 
    }) 
} 

Esportare tutte le funzioni che si desidera all'esterno.

Altro al Mongoose Docs.

+0

da dove proviene Tank? –

+0

@MariaJane Ricarica la risposta. Ho apportato la modifica, intendevo "Notifica". Il serbatoio proviene dall'equivalente dei documenti. – Iceman

+0

Il problema è quando utilizzo create ho ottenuto 2 documenti inseriti nel db, qualche idea del perché? –

Problemi correlati