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

标签 javascript node.js mongodb

伙计们,我真的不明白我做错了什么。尝试了我在互联网上可以找到的所有内容,但我无法在我的 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/

相关文章:

javascript - 静态站点表单到电子邮件 Eloquent 解决方案?

javascript - jqGrid:列调整大小触发点击事件

javascript - 在 JS (Node.js) 中同时管理多个长时间运行的任务

node.js - 在 Node.js 中获取终端的宽度

javascript - 将 ID 从所选项目传递到 Controller

javascript - 无法使 simplePagination jquery 插件正常工作

node.js - 在 node-webkit 中找不到模块

php - 使用 brew 在 Mac OSX 上的 PHP 中找不到 MongoClient

django - 如何在Django RESTful APIs中提高200万条数据的查询速度

node.js - 我将如何使用 Mongoose 创建和更新时间序列?