MongoDB(Node)findOne函数在按ID搜索时不返回结果

时间:2016-07-04 17:15:59

标签: javascript node.js mongodb

他们,我真的不明白我做错了什么。尝试了我可以在互联网上找到的所有内容,但我无法通过我的Node应用程序中的ID获取文档。情况就是这样:

如果我在终端中使用MongoDB shell,则会生成:

//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();

});

到目前为止还不错?

在我的节点应用中

QUERY

生成null。我真的打破了这个问题。有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

您在结果到达之前关闭了数据库:

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