Mongodb Can';无法使用Monk/Mongo按名称查找用户
我正在使用Node、Mongo和Monk开发一个CRUD应用程序。 我想按用户名查找记录,然后更新它。 但我找不到记录,此代码不起作用: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')
// 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
});