使用Monk / Mongo找不到用户名

时间:2016-05-18 06:07:17

标签: mongodb monk

我正在研究一个带有Node,Mongo和amp;的CRUD应用程序。僧。 我想通过用户名找到记录,然后更新它。 但我无法找到记录,此代码无效:

// GET User Profile
router.get('/userprofile', function(request,response){
  var db = request.db;
  var userName = request.body.username;
  var collection = db.get('usercollection');
  collection.findOne({
  "username": userName
   },{},function(e,user){
   response.render('userprofile', {
     "user": user
     });
   });
  });

“findOne”方法不返回任何内容,“user”对象最终为空。

2 个答案:

答案 0 :(得分:1)

findOne() 方法签名的签名中删除中间空对象,以使查询生效:

注意:获取userName的方式适用于请求方法为POST时,您在这里进行GET,因此需要使用request.query属性。更多详情here

var userName = request.query.username;
collection.findOne({"username": userName}, function(e,user){
    response.render('userprofile', { "user": user });
});

如果您想要更新,那么您可以使用 update() 方法,假设您要更新username字段以将其更改为'foo',以下存根显示了如何进行更新:

var u = collection.update({ "username": userName }, { "$set": { username: 'foo' } });
u.complete(function (err, result) {
    console.log(err); // should be null
    console.log(result); // logs the write result
});

答案 1 :(得分:0)

好的,我发现了问题。 Chridam的代码是正确的,但我还需要将我的表单从GET更改为POST。一旦我这样做,表单POSTed和mongo可以看到request.body.username(之前它是null)并使用Chridam的代码查找我的用户。

在阅读了Chridam的修改后的答案后,也能够与GET合作。

现在正在处理更新代码..