Mongodb Can';无法使用Monk/Mongo按名称查找用户

Mongodb Can';无法使用Monk/Mongo按名称查找用户,mongodb,monk,Mongodb,Monk,我正在使用Node、Mongo和Monk开发一个CRUD应用程序。 我想按用户名查找记录,然后更新它。 但我找不到记录,此代码不起作用: // GET User Profile router.get('/userprofile', function(request,response){ var db = request.db; var userName = request.body.username; var collection = db.get('usercollection')

我正在使用Node、Mongo和Monk开发一个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”对象最终为空。

从签名中删除中间的空对象,以使查询工作:


注意:当请求方法是POST时,获取
用户名的方式是针对POST的,在这里,您正在执行GET,因此需要使用
请求.查询
属性。更多细节


如果要更新,则可以使用方法,假设要更新
用户名
字段以将其更改为
'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
});

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

在阅读了Chridam修改后的答案后,他也能够让它与get一起工作


现在正在处理更新代码。

我试过了,但没有成功。我返回并使用了一个响应(send),结果发现我的用户名是空的:
response.send(request.body.username+“是搜索键”)
返回未定义的响应,即使URL看起来像是正确的查询:
http://localhost:3000/userprofile?username=fred
。我用来获取路由的原始表单是:`
表单#formEditUser(name=“edituser”,method=“get”,action=“/userprofile”)input#inputUserName(type=“hidden”,value=user.username,name=“username”)按钮#btnSubmit(type=“submit”)编辑
当请求方法是POST时,您获取用户名的方式是针对POST的,这里您正在执行GET,因此需要使用
请求.查询
属性。更多细节
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
});