伙计们,我真的不明白我做错了什么。尝试了我在互联网上可以找到的所有内容,但我无法在我的 Node 应用程序中通过 ID 获取文档。所以情况是这样的:
如果我在终端中使用 MongoDB shell,则会生成:
db.tochten.find({"_id" : ObjectId("577a6640c27dc10de81b265d")})
{ "_id" : ObjectId("577a6640c27dc10de81b265d"), "datum" : "2016-07-07", "weergavedatum" : "donderdag 7 juli", "begintijd" : "20:00", "eindtijd" : "21:00", "schip" : "Ouwe Dirk", "tocht" : "Rondvaart", "maxaantal" : "40", "opemerkingen" : "", "reserveringen" : [ ] }
到目前为止还不错吧?
在我的 Node 应用程序中
//open db connection
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
// Set our collection
var col = db.collection('tochten');
//objectid stuff
var ObjectId = require('mongodb').ObjectID;
var o_id = new ObjectId("577a6640c27dc10de81b265d");
col.findOne({_id:o_id},function(err, docs) {
console.log("Printing docs from Array. count " + JSON.stringify(docs));
});
db.close();
});
产生空值。我真的为这件事伤透了脑筋。有人可以告诉我我做错了什么吗?
最佳答案
您将在结果到达之前关闭数据库:
col.findOne({_id:o_id},function(err, docs) {
console.log("Printing docs from Array. count " + JSON.stringify(docs));
});
db.close(); // <-- here!
相反,一旦结果到达就关闭数据库:
col.findOne({_id:o_id},function(err, docs) {
console.log("Printing docs from Array. count " + JSON.stringify(docs));
db.close();
});
关于javascript - MongoDB(Node)findOne函数按ID搜索时不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38189597/