【问题标题】:Why is there no console log for this mongoose code?为什么这个猫鼬代码没有控制台日志?
【发布时间】:2019-12-27 10:07:43
【问题描述】:

我正在尝试学习如何在连接打开的情况下使用 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 结构如下:

数据库名称:数据库

集合名称:myCollection

Collection 中的文档结构:{_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!
[] 

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    问题出在您的模型上。它试图在 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);
    });
    

    希望这会有所帮助:)

    【讨论】:

    • 代码有效!我对此有点困惑:它试图在 myCollections 中查找文档,即您传递给模型创建方法的第一个参数的复数。单词是转换为复数还是只是在末尾附加's'?例如:如果第一个参数是'Is',是变成'Are'还是Iss'?
    • 据我所知,它只会在第一个参数的末尾附加一个“s”。很高兴它帮助..快乐编码:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2023-04-08
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多