Mongooseを通じてMongoDBデータベースのコレクションの値を増やそうとしています。これは、マングースのウェブサイトで示さデモコードです:Mongooseを含むMongoDBコレクションの1つのフィールドを増やす
var conditions = { name: 'borne' }
, update = { $inc: { visits: 1 }}
, options = { multi: true };
Model.update(conditions, update, options, callback)
そして、私はこのようなものがあります:あなたはマングースのウェブサイトのコードからあまり違いはありません見ることができるように
var conditions = { "uniqueId" : itemId };
var update;
if(increase)
update = {$inc : {inStock : 1}};
else
update = {$dec : {inStock : 1}};
Item.update(conditions, update, {}, callback);
を。
問題は、コードのこの部分が実行されると、Iフォーム{inStock : 1}
にフィールドとしてオブジェクトを有し$dec
(又は$inc
)と呼ばれる私のコレクションのフィールドに有する終わるということです。私はコレクションの在庫を増やしたいだけです。スキーマで私は持っている:
var ItemToSell = new Schema({
uniqueId : { type: Number, index: true }
, name : String
, type : String
, inStock : Number
});
私は間違って何を指摘することができますか? ありがとうございました。
返信いただきありがとうございます。空の '{}'を削除することで、{{"$ dec":{"inStock":1}} 'がコレクションに追加されるという問題を解決しました。あなたは私がMongooseの古いバージョンを使用していたという事実にも合っていましたが、まだ私は問題を解決しませんでした。今はコレクションに何もしないようです。 – Masiar
私は問題を解決しました。コールバック関数の 'err'入力は私のバージョンのMongooseを更新するようになりました。私は '$ dec'が存在しないことを発見したので、減額するには負の金額を入力する必要があります(' {$ inc:{inStock:-1}} ')。試してみてくれてありがとう、それは多くの助けになった! – Masiar
"** inStock **"をパラメータとしてどのように知っていますか? –