【问题标题】:Node.js:Typeerror cannot read property 'find' of undefinedNode.js:Typeerror 无法读取未定义的属性“查找”
【发布时间】:2015-07-22 22:21:10
【问题描述】:

这几天我一直在做一些研究,但在尝试测试我从网络上获得的代码时遇到了困难。

var MongoClient = require('mongodb').MongoClient,
  format = require('util').format;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if (err) {
    throw err;
  } else {
    console.log("successfully connected to the database");
    db.collection('chat', function(err, collection) {
    
      collection.find({}, {
          tailable: true,
          awaitdata: true,
          numberOfRetries: -1
        })
        .sort({
          $natural: 1
        })
        .each(function(err, doc) {
          console.log(doc);
        })
    });


  }
  db.close();
});

错误是: c:\Project\node_modules\mongodb\lib\mongo_client.js:406 抛出错误 ^ 我是否缺少任何外部库/参考,因为错误显示“无法读取未定义的属性'find'”。

mongodb 版本:“2.0.31”

【问题讨论】:

  • 在内部回调中,在访问collection之前检查err
  • 正如 Sirko 所说,收藏可能有问题。检查那里的错误。
  • 它说:[MongoError: Tailable cursor does not support sorting]
  • 是我的mongodb版本有问题吗?谢谢:)

标签: node.js mongodb


【解决方案1】:

您在第一个回调中检查可能的错误,但不是第二个。而不是

db.collection('chat', function(err, collection) {
    collection.find({}, {...

试试:

db.collection('chat', function(err, collection) {
    if (err) {
        throw err;
    } else {
        collection.find({}, {...

这不会让你的代码 sn-p 做你想做的事,但它会让你找出阻止它工作的错误。

【讨论】:

    【解决方案2】:

    您没有正确导出收集模块....

    如果假设你的模型类是 collection.js,

    那么在课堂结束时,应该是

    module.exports = { Collection}
    

    最终代码如下所示,

    const mongoose = require('mongoose')
    
    var Collection = mongoose.model('Collection', {
        a: {type: String},
        b: {type: String},
        c: {type: Number},
    }
    
    module.exports = { Collection}
    

    【讨论】:

      【解决方案3】:

      你也可以这样做:

      collection.find((err, data) => {
          if (err) {
            console.log("An error: ", err);
          } else {
            console.log("My data", data);
          }
        });
      

      【讨论】:

        猜你喜欢
        • 2021-12-21
        • 2020-10-04
        • 2018-12-29
        • 1970-01-01
        • 1970-01-01
        • 2021-08-11
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多