【发布时间】: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