使用express和node.js更新mongodb中的单个logging
我想通过mongoDB的集合中的_id更新单个logging。
更新:我改变了res要求(谢谢!),并实施了我传入的objectId周围的db.ObjectId(),现在我得到一个500内部服务器错误。
"_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回应,但我的logging没有更新。 我的语法有什么问题?
您需要确保将string
_id转换为ObjectId
。
另外,你正在使用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} ); }); });
不同的驱动程序使用不同的方法来创buildObjectId:
- mongoDB本地驱动程序:new ObjectId(
idString
); - mongoJS:db.ObjectId(
idString
); - mongoSkin:toObjectID(
idString
); -
idString
:idString
(idString
);
它应该是req.body,而不是res.body
db.collection('userlist').update( { _id: userToUpdate}, res.body -> should be req.body