2017-02-10 34 views
0

我正在接受來自前端的用戶名和電話,現在我需要將電話發送給mongodb,並且基於該電話,我需要獲取匹配學生的詳細信息。請幫助我做到了這一點。使用服務器js中的密鑰從mongo中獲取數據

這是我的服務器代碼:

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'); 

} 

回答

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'); 
}); 

未測試!

+0

非常感謝兄弟。它工作得很好! –

+0

但如果我輸入錯誤的電話,它應該給我錯誤嗎? –

+0

對不起,如果數據庫出現問題,將會返回錯誤。任何方式謝謝你。 –

0

FindOne會返回一個承諾。在返回json之前,你需要等待它完成。

要做到這一點,你需要做到以下幾點:

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

您的查詢似乎是錯誤的了。

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

我相信這是它

+0

謝謝,但我正在使用貓鼬connection.But如果我嘗試上述查詢它給我錯誤像[User.find(...)] .exe執行不是一個函數 –

+0

嘗試將該函數內執行代碼並刪除.select部分僅用於測試。像find()。exec(function); –

+0

謝謝你的迴應。請參閱mongoose文檔,它與mongoDB查詢完全不同。 –

相關問題