TypeError:无法读取猫鼬未定义的属性“ find”

时间:2020-01-03 22:56:10

标签: node.js mongodb mongoose mongodb-atlas

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

enter image description here

我正在使用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的狗怎么样?

1 个答案:

答案 0 :(得分: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)
    })
});