这种使用db.model('Model_Name').find(...)
工作过,但我已经分开我的数据库,模型和控制器,所以现在看来我需要改变的东西请帮助显示我要去哪里错了:如何模仿我的猫鼬设置
schema.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var UsersSchema = new Schema({
display_name : String,
email : String
});
var ClientErrorsSchema = new Schema({
datetime : Number,
msg : String,
url : String,
line : Number
});
var users = mongoose.model('Users',UsersSchema);
var client_errors = mongoose.model('Client_Errors',ClientErrorsSchema);
module.exports = mongoose.model;
db.js
var mongoose = require('mongoose');
var model = require("./schema.js");
var MONGO = {
username: "admin",
password: "***",
server: 'localhost',
port: '*****',
db: 'db_name',
connectionString: function(){
return 'mongodb://'+this.username+':'+this.password+'@'+this.server+'/'+this.db;
},
options: {
server:{
auto_reconnect: true,
poolSize: 20,
socketOptions:{
keepAlive: 1
}
},
db: {
numberOfRetries: 10,
retryMiliSeconds: 1000
}
}
};
var db = mongoose.createConnection(MONGO.connectionString(), MONGO.options);
db.model = model;
db.on('error', function(err) {
f.consoleLogger("DB connection Error: "+err);
});
db.on('open', function() {
f.consoleLogger("DB connected");
});
db.on('close', function(str) {
f.consoleLogger("DB disconnected: "+str);
});
module.exports = db;
个user.js的
var db = require("./db.js");
...
db.model('Users').find(...)
因此,使用util.inspect
,我可以看到数据库拥有所有的车型,但我发现在发现错误TypeError: Cannot read property 'User' of undefined'
。
UPDATE
Toad22222提供非常好的建议和模式似乎是有效的 - 但查询不工作 - 无论db.model.Users.find({...},function(err,data){...});
或db.model.Users.find({...}).exec(function(err,data){...});
火灾回调。我在on('open')
事件中也放了相同的代码,没有任何反应。希望有人能解释为什么。
所有建议表示赞赏!
由于您正在导出'module.exports = mongoose.model;'然后在user.js中您应该使用'db('users')。find ...' – Molda