使用服务器js中的密钥从mongo获取数据

时间:2017-02-10 09:08:00

标签: javascript node.js mongodb mongoose

我接受来自前端的用户名和电话,现在我需要发送电话到mongodb,并且根据该电话,我需要获取匹配学生详细信息的详细信息。请帮助我实现此目的。

这是我的服务器代码:

server.post('/phone',urlencodedParser,function(req,res){
var resp={
  Username : req.body.username,
  phn:req.body.password
}
databaseInterface.studentDetail(resp.phn);
    res.json(resp.phn);

console.log(resp);
 res.send('username :' + req.body.username + 'passwrd:' + req.body.password);
})

这是我的mongoDB代码:

 function studentDetail(phn){
  User.findOne({'Father.PhoneNo':phn},function(err,studentcollection2){
    if (err) return phn(err);
    return phn(null, studentcollection2);
     }).select('-__v');

}

2 个答案:

答案 0 :(得分:1)

您正在使用的回调存在一些问题。

function studentDetail(phn,callback){
  User.findOne({'Father.PhoneNo':phn},function(err,studentcollection2){
    if (err) return callback(err);
    return callback(null, studentcollection2);
     }).select('-__v');

}

您的回复,

databaseInterface.studentDetail(resp.phn,  function(err, val){
    if(err) res.send('ERROR!');
    else res.send('Response');
});

未经测试!

答案 1 :(得分:0)

FindOne将返回一个承诺。在返回你的json之前,你需要等待它完成。

要实现这一目标,您需要执行以下操作:

databaseInterface.studentDetail(resp.phn).then((data,error) => {
  res.json({response:data});
});

你的查询似乎也错了。

function studentDetail(phone) {
  return [yourQuery].exec()
}

我相信它是