【问题标题】:TypeError: Cannot read property 'find' of undefined on mongooseTypeError:无法读取猫鼬上未定义的属性“查找”
【发布时间】:2020-04-22 11:22:38
【问题描述】:

我是 MongoDB Atlas 的新手。我正在尝试使用 mongoose 在我的“test2”数据库中查询当前存在的集合“dogs”。

我正在使用 nodeJS 来执行查询

var mongoose = require('mongoose');    
mongoose.connect('mongodb+srv://*****:*******b@cluster0-uln4x.mongodb.net/test?retryWrites=true&w=majority', {
useUnifiedTopology: true,
useNewUrlParser: true,
})
.then(() => console.log('DB Connected!!!'))
.catch(err => {
console.log('did not work');    });    
var db = mongoose.connection;   
db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function() {
    db.dogs.find().forEach(printjson);     //ERROR!
 });

导致错误:TypeError: Cannot read property 'find' of undefined

狗怎么是undefined

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-atlas


    【解决方案1】:

    在您的代码中dogs 必须是猫鼬模型,还将 mongoDB 连接字符串更改为test2,请试试这个:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb+srv://*****:*******b@cluster0-uln4x.mongodb.net/test2?retryWrites=true&w=majority', {
        useUnifiedTopology: true,
        useNewUrlParser: true,
    })
        .then(() => console.log('DB Connected!!!'))
        .catch(err => {
            console.log('did not work', err);
        });
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    
    const dogsSchema = new mongoose.Schema({
        any: {}
    });
    
    const Dogs = mongoose.model('dogs', dogsSchema, 'dogs');
    
    db.once('open', function () {
        Dogs.find().lean(true).exec((err, data) => {
            console.log('Err ::', err, 'data ::', data)
        })
    });
    

    【讨论】:

    • 感谢这项工作。然而,我们需要为这个操作创建一个新的模式似乎很奇怪。
    • @cmote :我们必须做并且通常会在常规实践中在猫鼬中创建模式,这对写入更有帮助..请检查这个:stackoverflow.com/questions/21429630/…
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多