Javascript 使用express和node.js更新mongodb中的单个记录
我想在mongoDB的集合中通过_id更新一条记录 更新:我将res改为req(谢谢!),并围绕我要传递的ObjectId实现了db.ObjectId(),现在我得到一个500内部服务器错误Javascript 使用express和node.js更新mongodb中的单个记录,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我想在mongoDB的集合中通过_id更新一条记录 更新:我将res改为req(谢谢!),并围绕我要传递的ObjectId实现了db.ObjectId(),现在我得到一个500内部服务器错误 "_id" : ObjectId("54d5296711436278137af74b"), "username" : "alex", "email" : "alex@gmail", "fullname" : "alex man", "age" : "15",
"_id" : ObjectId("54d5296711436278137af74b"),
"username" : "alex",
"email" : "alex@gmail",
"fullname" : "alex man",
"age" : "15",
"location" : "minneap",
"gender" : "mal"
这是来自客户端的ajax调用
$.ajax({
type: 'PUT',
data: updatedUser,
url: '/users/updateuser/' + globalUserID,
dataType: 'JSON'
}).done(function(response){
这是路由代码
/*
* PUT to updateuser
*/
router.put('/updateuser/:id', function(req, res) {
var db = req.db;
var userToUpdate = req.params.id;
db.collection('userlist').update(
{ _id: userToUpdate},
req.body,
function(err, result){
res.send(
(err === null) ? {msg: ''} : {msg: err}
);
});
});
我收到了200条回复,但我的记录没有更新。我的语法有什么问题?应该是req.body,而不是res.body
db.collection('userlist').update(
{ _id: userToUpdate},
res.body -> should be req.body
您需要确保将
字符串
\u id转换为对象id
另外,您使用的是res
.body,而不是req
.body
router.put('/updateuser/:id', function(req, res) {
var db = req.db;
var userToUpdate = req.params.id;
db.collection('userlist').update({ _id: ObjectId(userToUpdate)}, req.body, function (err, result) {
res.send(
(err === null) ? {msg: ''} : {msg: err}
);
});
});
不同的驱动程序使用不同的方法创建ObjectId:
- mongoDB本机驱动程序:新的ObjectId(
)李>idString
- mongoJS:db.ObjectId(
)李>idString
- mongoSkin:toObjectID(
)李>idString
- mongoose:mongoose.Types.ObjectId(
)李>idString
idString
);这是本机mongoDB使用的方法。Mongoose您使用Mongoose.Types.ObjectId(string
);MyDB是“mongo.db(url)”数据库连接。节点应用程序中的错误堆栈说明不了多少。PUT/users/updateuser/54d3ba6cfe49c07c04733fac 500 42.412 msI am使用mongoskin供参考