2017-08-28 9 views
1

アイテムのIDやアイテムのアイテムのステータスなど、複数のものを見つけたいと考えています。 しかし、私が偽になるたびに。 Node.jsコード:nodejsのmongoDBから複数のアイテムを検索

app.post('/product', function (req, res) { 

var collection = req.db.get('itemslist'); 
var id = req.body.id; 
var status = req.body.status; 
collection.findOne({id: id, status: status}, function(e, doc){ 
console.log(id, status); 
if (doc == true){ 
    res.send('true'); 
    } 
else { 
    res.send('false'); 
} 

}); 
}); 

どこが間違っていますか?

+1

'doc'はドキュメントであり、ブール値ではありません。 if(!doc){res.send( 'false'); } else {res.send( 'true');} –

+0

それは働いた。助けてくれてありがとう。私の質問に答える私はそれを受け入れるだろう。 –

+0

また、この 'doc'のことを説明してください。 –

答えて

1

docはドキュメントであり、ブール値ではありません。試してif (!doc){ res.send('false'); } else { res.send('true');}

collection.findone()を使用すると、「このメソッドの最初の引数として指定された基準を満たす1つのドキュメント」が返されます。

つまり、コレクションの最初のドキュメントであるドキュメントは、すべてのデータを含むオブジェクトです。

詳細はこちらhere

+0

それは動作していますが、今は' collection.findOneAndUpdate() 'を使ってデータを更新していますが、データベースが更新される度にtrueになります。 ( 'groundlist'); var id = req.body.id; var status = req。 body.status; collection.findOneAndUpdate({status:status、id:id}、{$ set:{status: "booked"}}、function(e、doc){ console.log(id、status); 他 { res.send(真);} }); });(!DOC){; にconsole.log(e)の res.send(偽)}であれば ' これは私の更新コード。 –

+0

'upsert'フラグがtrueの時(デフォルトではfalse) - 一致する文書がなければ、' findOneAndUpdate() 'がそれを作成します。私はあなたがこのオプションを使用しているとは思わないので、IDとステータスの一致する文書がないときにfalseにする必要があります。ところで、エラーを処理するには、次のようにしてください: '... function(e、doc){console.log(id、status); if(e){console.log(e);} else if(!doc ){res.send(false);} else {res.send(true);}})) ' –

関連する問題