如何模拟我的猫鼬设置

时间:2017-06-17 05:53:31

标签: node.js mongodb mongoose

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')事件中也放了相同的代码,没有任何反应。希望有人可以解释原因。

所有建议都表示赞赏!

1 个答案:

答案 0 :(得分:1)

试试

module.exports = {
    User: users,
    ClientErrors: client_errors
}

而不是

module.exports = mongoose.model;

您希望导出正在创建的模式,而不是mongoose.model数据类型。