1

我无法弄清楚这一点,我尝试使用终端执行相同的查询并且它成功了。我应该注意,在使用 MongoHub 时,相同的查询会返回一行,但在检查记录后没有任何变化。下面是 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}, 

我没有看到类型变量在第一行中定义的位置。这意味着很可能找不到该集合。但是您没有在两行之间检查此问题的任何错误。

在更新语句中,您应该有 {_id: ObjectId(id)} 其中 id 应该是 511c000d994cde0d02adf1ba 以用于您的示例。

这些问题似乎一开始就很明显。

于 2013-02-14T18:19:10.647 回答