Mi piacerebbe avere un unico metodo che crea o aggiorna un documento per un criterio. Cercando e provando diverse tecniche come this one, ho trovato un _id null per il mio documento. L'utilizzo di findByIdAndUpdate ha un effetto simile.Mongoose findOneAndUpdate Upsert _id null?
vedo un documento inserito nella collezione, ma il campo _id è nullo:
exports.savePolicy = function (plcy, callback) {
console.log('priority is : ' + plcy.priority)
try {
var policy = new Policy(plcy);
var query = {_id: plcy._id}; //this may be null
var update = {
name: plcy.name || defaults.policyDefaults.name,
longDescription: plcy.longDescription || defaults.policyDefaults.longDescription,
shortDescription: plcy.shortDescription || defaults.policyDefaults.shortDescription,
priority: plcy.priority, colorHex: plcy.colorHex || defaults.policyDefaults.colorHex,
settings: plcy.settings || [],
parentPolicyId: plcy.parentPolicyId || null
}
Policy.findOneAndUpdate(query, update, {upsert: true}, function (err, data) {
callback(err, data);
});
} catch (e) {
log.error('Exception while trying to save policy: ' + e.message);
callback(e, null);
}
C'è qualcosa che può essere fatto per ottenere il _id di non essere nullo quando il suo non è un aggiornamento?
hai mai capire questo? Stavo ricevendo lo stesso problema. Ho finito per controllare manualmente _id e poi chiamare findOneAndUpdate per un aggiornamento o create() per un nuovo record. – Trent