Node.js:Typeerror无法读取属性' find'未定义的

时间:2015-05-12 07:13:51

标签: node.js mongodb

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



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:\项目\ node_modules \ MongoDB的\ LIB \ mongo_client.js:406           扔错了                 ^ 我错过了任何外部库/参考,因为错误显示" 无法读取属性'找到'未定义的"。

mongodb版本:" 2.0.31"

3 个答案:

答案 0 :(得分:5)

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

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

尝试:

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

这不会使您的代码段执行您想要的操作,但它会让您找出阻止其工作的错误。

答案 1 :(得分:0)

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

如果假设您的模型类是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}

答案 2 :(得分:0)

您也可以这样:

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