使用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 );
  • idStringidStringidString );

它应该是req.body,而不是res.body

 db.collection('userlist').update( { _id: userToUpdate}, res.body -> should be req.body