Sto cercando di incrementare un valore in una raccolta nel mio database MongoDB tramite Mongoose. Questo è il codice demo mostrata sul sito Mongoose:Aumentare un campo in una raccolta MongoDB con Mongoose
var conditions = { name: 'borne' }
, update = { $inc: { visits: 1 }}
, options = { multi: true };
Model.update(conditions, update, options, callback)
E io avere qualcosa di simile:
var conditions = { "uniqueId" : itemId };
var update;
if(increase)
update = {$inc : {inStock : 1}};
else
update = {$dec : {inStock : 1}};
Item.update(conditions, update, {}, callback);
Come potete vedere, non c'è molta differenza dal codice del sito web del Mongoose.
Il problema è che, quando viene eseguito questo pezzo di codice, che finiscono per avere nella mia collezione un campo chiamato $dec
(o $inc
) che ha un oggetto come un campo nel modulo {inStock : 1}
. Vorrei solo incrementare la voce inStock della collezione. Nello schema ho:
var ItemToSell = new Schema({
uniqueId : { type: Number, index: true }
, name : String
, type : String
, inStock : Number
});
Qualcuno può segnalare cosa sto sbagliando? Grazie mille.
Grazie per la risposta. Rimuovendo il vuoto '{}' ho risolto il problema che causava '{" $ dec ": {" inStock ": 1}}' da aggiungere alla collezione. Avevi ragione anche con il fatto che stavo usando una vecchia versione di Mongoose, ma ancora non ho risolto il problema. Ora sembra che non faccia nulla alla collezione. – Masiar
Ok ho risolto il problema. L'input 'err' della funzione di callback ha dato qualcosa ora che aggiorno la mia versione di Mongoose. Ho scoperto che '$ dec' non esiste, quindi per decrementare devo inserire un importo negativo (' {$ inc: {inStock: -1}} '). Grazie per aver provato, ha aiutato molto! – Masiar
sai come "** inStock **" come parametro? –