1

これを理解できません。ターミナルを使用して同じクエリを実行しようとしましたが、成功しました。MongoHub を使用すると、同じクエリが 1 つの行を返すことに注意してください。しかし、レコードをチェックした後、変更はありません。以下は、mongo のセットアップと更新するアクションです。

var mongo = require('mongodb');

var Server = mongo.Server,
    Db = mongo.Db,
    BSON = mongo.BSONPure;

var server = new Server('localhost', 27017, {auto_reconnect: true});
    db = new Db('help', server, {safe: true});

type = 'issues';
id = 2;
body = { comments: '64' };

db.collection(type, function(err, collection) {
       collection.update({id:id}, {$addToSet: body}, {safe:true}, function(err, result) {
            if (err) {
                console.log('Error updating: ' + err);
                res.send({'error':'An error has occurred'});
            } else {
                console.log('' + result + ' document(s) updated');
                res.send(type);
            }
        });
    });

//Mongo Collection Record
{ "_id" : ObjectId( "511c000d994cde0d02adf1ba" ),
  "comments" : [ 
    1, 
    2, 
    3 ],
  "id" : 2,
  "text" : "This is another issue test",
  "title" : "Another Issue Test" }

どんな助けでも大歓迎です

4

2 に答える 2

1

変数 id を req.params から取得した整数として解析していなかったことがわかりました。req.params オブジェクトから id を取得していたことを含める必要がありました。

var id = parseInt(req.params.id);

問題を解決しました。

于 2013-02-15T11:18:30.247 に答える
0

この部分にはいくつかの問題があるようです

db.collection(type, function(err, collection) {
   collection.update({id:id}, {$addToSet: body}, {safe:true}, 

最初の行で型変数がどこで定義されているのかわかりません。これは、コレクションが見つからなかった可能性が高いことを意味します。ただし、2行間でこの問題をチェックする際のエラーはありません。

更新ステートメントには、{_ id:ObjectId(id)}が含まれている必要があります。たとえば、idは511c000d994cde0d02adf1baである必要があります。

これらは、すぐに明らかな問題です。

于 2013-02-14T18:19:10.647 に答える