3

我在通过 Node + Express 和 Mongodb 通过 Mongoskin 更新文档时遇到问题。我通过 mongo 命令行使用了以下内容,它按预期工作:

db.userlist.update({_id: ObjectId('5377821219f21e974150bacf')}, {$set: {username: "Test"}})

但是,在 Node 中执行类似的操作不起作用,并且似乎通过浏览器返回 500 错误。

db.collection('userlist').update({_id: ObjectId('5377821219f21e974150bacf')}, {$set: {username: "Test"}});

我尝试传递选项 multi: true 和 false 并尝试添加回调,但每次都不起作用。

我错过了什么?ps 我对 node 和 mongodb 很陌生,在此先感谢。

4

1 回答 1

5

好吧,您的语法已关闭-mongo shell 的语法与通过 mongoskin 调用 node.js 中的函数不同。我已经根据本教程将您的代码更新为我认为可以使用的代码:http ://www.hacksparrow.com/mongoskin-tutorial-with-examples.html :

var mongo = require('mongoskin');
require('mongodb');
var db = mongo.db("mongodb://localhost:27017/mongoskin", {native_parser:true});
db.collection('userlist').update({_id: mongo.helper.toObjectID("5377821219f21e974150bacf")}, {'$set':{username:"Test"}}, function(err, result) {
            if (err) throw err;
            if (result) console.log('Updated!');
        });

注意 mongo.helper.toObjectID()。从文档https://github.com/kissjs/node-mongoskin

collection.update({_id: toObjectID(id)}, ...)
于 2014-05-17T18:02:41.983 回答