Próbuję zwiększyć wartość w kolekcji w mojej bazie danych MongoDB poprzez Mongoose. Jest to kod demo pokazane na stronie Mongoose:Zwiększenie jednego pola w kolekcji MongoDB z Mongoose
var conditions = { name: 'borne' }
, update = { $inc: { visits: 1 }}
, options = { multi: true };
Model.update(conditions, update, options, callback)
I mam coś takiego:
var conditions = { "uniqueId" : itemId };
var update;
if(increase)
update = {$inc : {inStock : 1}};
else
update = {$dec : {inStock : 1}};
Item.update(conditions, update, {}, callback);
Jak widać nie ma zbyt dużej różnicy z Mangusta w kodzie strony.
Problem polega na tym, że kiedy ten fragment kodu jest wykonywana, I skończyć posiadające w swojej kolekcji jedno pole o nazwie $dec
(lub $inc
), który ma obiektu jako pola w formularzu {inStock : 1}
. Chciałbym tylko zwiększyć wpis w kolekcji inStock. W schemacie mam:
var ItemToSell = new Schema({
uniqueId : { type: Number, index: true }
, name : String
, type : String
, inStock : Number
});
Czy ktoś może wskazać, co robię źle? Wielkie dzięki.
Dzięki za odpowiedź. Po usunięciu pustego '{}' rozwiązałem problem, który powodował '{" $ dec ": {" inStock ": 1}}' do dodania do kolekcji. Miałeś rację także z tym, że używałem starej wersji Mongoose, ALE nadal nie rozwiązałem problemu. Teraz wydaje się, że nie robi nic w kolekcji. – Masiar
OK Rozwiązałem problem. Wprowadzenie 'err' funkcji wywołania zwrotnego dało coś teraz, że aktualizuję moją wersję Mongoose. Odkryłem, że '$ dec' nie istnieje, więc aby zmniejszyć, muszę wprowadzić ujemną kwotę (' {$ inc: {inStock: -1}}). Dzięki za spróbowanie, bardzo pomogło! – Masiar
Czy wiesz jak "** inStock **" jako parametr? –