【问题标题】:Mongoose importing models won't workMongoose 导入模型不起作用
【发布时间】:2016-06-07 00:25:13
【问题描述】:

当我在使用它们的同一个文件中定义架构和模型时,一切正常。

但是,如果我像我在网上看到的所有示例一样导入它们:像这样...

index.js

var mongoose = require('mongoose');
var User = require('./../models/user');

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});

user.js

var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);

...那么我在 index.js 中的任何用户实例上运行的任何函数都将挂起。

我已经通过像这样将 mongoose 变量传递给 user.js 来解决这个问题...

index.js

var mongoose = require('mongoose');
var User = require('./../models/user')(mongoose);

mongoose.connect('mongodb://localhost/demo_database', function(){
    var user = new User({...});
});

user.js

module.exports = function(mongoose) {

    var UserSch = new mongoose.Schema({
        ...
    });

    return mongoose.model('user', UserSch);
}

为什么我必须这样做,而我看到的所有示例都没有?

谢谢!

其他信息

如果我将 user.js 移动到与 index.js 相同的文件夹并执行var User = require('./user'),一切都会按预期进行。

【问题讨论】:

  • 首先你需要连接猫鼬!看我的例子:github.com/Talento90/ima-up
  • @MarcoTalento 我是,为了简洁起见,我只是把这部分从这篇文章中删除了。就像我说的,当它全部在同一个文件中时它可以工作。虽然导入模型时,我可以在 mongodb 日志中看到连接,但永远不会调用 .find 或 .save 回调并且脚本挂起。
  • @MarcoTalento 我编辑了帖子以显示我在哪里调用 mongoose.connect()

标签: javascript node.js mongodb mongoose


【解决方案1】:

试试这个代码!!!

index.js

var mongoose = require('mongoose');
mongoose .connect(connectionString)
var mongoDb = mongoose.connection

mongoDb.on('error', () => {
  server.log('error', `Unable to connect to database: ${config.database.connectionString}`)
})

mongoDb.once('open', () => {
  server.log('info', `Connected to database: ${config.database.connectionString}`)
})


// Load all Mongoose models
require('./../models/user');

//Using Model
var userModel = mongoose.model('user');

userModel.findOne({ _id: "id..." })

User.js

var mongoose = require('mongoose');

var UserSch = new mongoose.Schema({
    ...
});

module.exports = mongoose.model('user', UserSch);

【讨论】:

  • 那么基本上你在这里所做的就是在模型导入 index.js 之前移动连接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 2021-09-03
  • 2021-01-28
  • 2019-02-23
  • 2017-06-18
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多