2017-08-28 32 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()時,它將返回:「滿足指定爲此方法的第一個參數的條件的一個文檔。

即您的集合中的第一個文檔,文檔是包含所有數據的對象。

您可以找到更多信息here

+0

它的工作,但現在我正在使用'collection.findOneAndUpdate()'來更新數據,但是每次更新數據庫都會變得更新。 'app.post('/ ground',function(req,res){ var collection = req.db.get('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); 如果(DOC!){ res.send(假); 的console.log(E);} 其他 { res.send(TRUE);} }); });' 這是我的更新代碼。 –

+0

當'upsert'標誌爲真(默認爲false) - 當沒有匹配的文檔時,'findOneAndUpdate()'將創建一個。我沒有看到你使用這個選項,所以如果沒有與ID和狀態匹配的文檔,你應該會錯誤。順便說一句,要處理錯誤,你可以使用:'... function(e,doc){console.log(id,status); if(e){console.log(e);} else if(!doc ){res.send(false);} else {res.send(true);}});' –