使用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
- expression3.0和护照authentication
- 当执行一个更复杂的GET时,Express JS会返回404,然后localhost / users(localhost / users / about)
- 如何构build基于Express的Azure移动服务/ Moible应用程序
- 在结束AJAX请求之前等待node.jscallback完成
- 将Javascript从节点快递发送到angular度服务
- 在Express中渲染玉石时包含其他文件的内容?
- mongoose + express + mongodb声明多个模式后不能从数据库获取数据
- 在不超过堆栈限制的情况下,通过大量庞大的函数进行迭代或recursion的最佳方法是什么?
- Socket 1.0重复连接多次