猫鼬导入模型不起作用

Mongoose importing models won't work

本文关键字:不起作用 模型 导入      更新时间:2023-09-26

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

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

索引.js

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

用户.js

var mongoose = require('mongoose');
var UserSch = new mongoose.Schema({
    ...
});
module.exports = mongoose.model('user', UserSch);

。然后我在索引中的任何用户实例上运行的任何函数.js都将挂起。

我已经通过将猫鼬变量传递给用户来解决此问题.js就像这样......

索引.js

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

用户.js

module.exports = function(mongoose) {
    var UserSch = new mongoose.Schema({
        ...
    });
    return mongoose.model('user', UserSch);
}

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

谢谢!

附加信息

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

试试这段代码!!

索引.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..." })

用户.js

var mongoose = require('mongoose');
var UserSch = new mongoose.Schema({
    ...
});
module.exports = mongoose.model('user', UserSch);