为什么此猫鼬代码没有控制台日志?

时间:2019-08-22 06:36:49

标签: node.js mongodb mongoose

我正在尝试学习如何在连接打开的情况下使用mongoDB,我遇到了Mongoose。

我试图用mongoose测试与mongoDB的连接,并且有效。

var mongoose = require('mongoose');
var mongoDB = "mongodb://IP:port/database";
mongoose.connect(mongoDB, { useNewUrlParser: true },function(err){console.log("Connected")});

我的MongoDB具有以下结构:

数据库名称:db

集合名称:myCollection

集合中的文档结构:{_id:'random object string generated by mongoDB, name: 'Name', bill: '56445'}

我想获取所有文档或匹配的文档,例如db.myCollection.find()db.myCollection.find({name:'Jeeva'})

这是我尝试过的:

var mongoose = require('mongoose');
var mongoDB = "mongodb://IP:port/db";
mongoose.connect(mongoDB, { useNewUrlParser: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
var Schema = mongoose.Schema;
var myCollection = new Schema({
    name : String,
    bill : String
}, {collections : 'myCollection'});
var myCollectionModel = mongoose.model('myCollection', myCollection);
var myCollection = mongoose.model('myCollection')
myCollection.find({}, function(error, PO){
    console.log("im here!")
    console.log(PO);    
});

控制台:

im here!
[] 

1 个答案:

答案 0 :(得分:2)

问题出在您的模型上。它试图在 myCollections 中找到文档,即您传递给模型创建方法的第一个参数的复数形式。这是猫鼬的默认行为。要进行处理,您可以手动将您的收藏名称作为第三个参数。尝试更改

var mongoose = require('mongoose');
var mongoDB = "mongodb://IP:port/db";
mongoose.connect(mongoDB, {
    useNewUrlParser: true
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
var Schema = mongoose.Schema;
var myCollection = new Schema({
    name: String,
    bill: String
}, {
    collections: 'myCollection'
});
var myCollectionModel = mongoose.model('myCollection', myCollection, 'myCollection');
myCollectionModel.find({}, function(error, PO) {
    console.log("im here!")
    console.log(PO);
});

希望这会有所帮助:)