此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'
。
更新
Toad22222提供了很好的建议,并且架构看似有效 - 但查询无效 - db.model.Users.find({...},function(err,data){...});
或db.model.Users.find({...}).exec(function(err,data){...});
都不会触发回调。我在on('open')
事件中也放了相同的代码,没有任何反应。希望有人可以解释原因。
所有建议都表示赞赏!
答案 0 :(得分:1)
试试
module.exports = {
User: users,
ClientErrors: client_errors
}
而不是
module.exports = mongoose.model;
您希望导出正在创建的模式,而不是mongoose.model
数据类型。