【问题标题】:findOne works but not get all/findfindOne 有效,但不能全部/查找
【发布时间】:2015-03-05 14:02:26
【问题描述】:

findOne 工作正常

db.collection('updates', function (err, collection) {
        collection.findOne({
            author: req.user._id
        }, function (err, doc) {
        }
 });

我正在尝试获取所有文档,而不仅仅是一份。我正在将 findOne 更改为 find(如下所示),但它不起作用。我该如何解决这个问题?

        db.updates.find({
            author: req.user._id
        }, function (err, doc) {
        }

错误信息: 它是说Cannot call method "find" of undefined,这意味着集合没有被识别。

更新: 这也不起作用:

db.collection('updates', function (err, collection) {
        collection.find({ //changed findOne to find
            author: req.user._id
        }, function (err, doc) {
        }
 });

【问题讨论】:

  • 定义“不起作用”。你没有结果?你得到一个错误?
  • 是的,该评论已被删除。但是“带有句号的集合”在哪里?一个都看不到只有“更新”。
  • 表示不能调用未定义的“find”方法,表示无法识别集合。
  • 嗯。 db.collection('updates',function(err,collection) { collection.find(...) })。您是否认为这可能是相同的,因为您有两个完全不同的列表要访问?您还应该标记到 node.js
  • 谢谢尼尔!我现在给它贴上标签。我尝试将 findOne 更改为仅查找,这给出了相同的错误。无法调用未定义的方法“find”。

标签: node.js mongodb


【解决方案1】:

您似乎正在使用Native MongoDB Node.JS Driver 来查询您的数据库。 According to its readme,你应该使用.toArray()方法来实例化MongoDB cursor,从.find()调用返回:

collection.find({
  author: req.user._id
}).toArray(function (err, docs) {
  // docs is an Array of documents here
});

如果您在使用原生 MongoDB Node.JS 驱动程序时遇到问题,我建议您使用一些包装器和更直观的 API,例如:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多