我无法弄清楚这一点,我尝试使用终端执行相同的查询,但它很成功。我应该注意,同样的查询返回使用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" }
非常感谢任何帮助
答案 0 :(得分:1)
结果我没有将变量id解析为我从req.params获取的整数,我应该包括我从req.params对象中获取id。
var id = parseInt(req.params.id);
解决了这个问题。
答案 1 :(得分:0)
这部分似乎有一些问题
db.collection(type, function(err, collection) {
collection.update({id:id}, {$addToSet: body}, {safe:true},
我没有看到第一行中定义了哪个类型变量。这意味着可能找不到该集合。但是你没有在两行之间检查这个问题的错误。
在更新语句中,你应该有{_id:ObjectId(id)},其中id应为511c000d994cde0d02adf1ba。
这些问题似乎很明显。