2

私は数字の配列を持っています:

readersNum : {type: [Number], default: []},

indexVariableに入れる値を 1 増やしたいと思います。

これは機能します:

Posts.update({"readerID":readerID},{$inc:{"readersNum.0":1}},{upsert:true,safe:true},
              function(err){
                  console.log(err);
              });

しかし、問題は、値が特定の(定数)インデックスにないことです。変数です..インデックス変数がindexVariable0ではないと仮定すると、どうすればそれを増やすことができますか?

私もこれを試しました:

Posts.findOne({"readerID":readerID },['readersNum'],function(err, readerID){
    readerID.readersNum[indexVariable] = readerID.readersNum[indexVariable]+1;
    try { 
        Posts.save(readerID,function(err) {
        if (err) {
            console.log("ERROR while saving reader num: " + err);
        }
        else {
            console.log('saved reader num successfully');           

        }
        });
    }
    catch(e){
        console.log("ERROR while saving reader num: " + e);
    }
    });

上記のコードを実行すると、変更された値がコンソールに出力され、「saved reader num successfully」が表示されますが、データベースの値は同じままです! 誰かが私が間違っていることを教えてくれたら本当にありがたいです。ありがとうございました!

4

1 に答える 1

4

あなたがこれを行うことができるインデックスを知っていると仮定すると:

var update = {};

update['readersNum.' + index] = 1; // update now has property like `readersNum.3`

Posts.update({"readerID":readerID},{$inc: update},{upsert:true,safe:true}, function(err){ console.log(err); });
于 2012-04-20T09:53:43.460 に答える