2017-02-10 6 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

ありがとうございます。上記のクエリを試してみると、[User.find(...)]のようなエラーが出ます。execは関数ではありません。 –

+0

この関数をexecコードの中に入れてみてくださいテストのためだけに.select部分を削除します。 find()と同様です。exec(function); –

+0

ありがとうございます。 mongooseのクエリとはかなり異なるmongooseのドキュメントを参照してください。 –

関連する問題