【发布时间】:2013-06-19 06:40:11
【问题描述】:
我有一个规模不错的项目,我需要进行一些重组。
我正在使用 mongoose 作为我的节点 ORM。我想把我所有的猫鼬模型放在一个名为“模型”的文件夹中。我已经读过,当我这样做时,我可以在模型文件夹中放置一个 index.js 文件,这样就可以拉入所有模型并存储它们。
app.js:
...
var mongoose = require('mongoose');
var models = require('./models')(mongoose);
app.configure(function () {
mongoose.connect(dbPath, function(err) {
if (err) throw err;
});
...
});
// include models in my routes so I need access
...
我被困在 index.js 中返回我的所有模型需要做什么
index.js(这是我尝试过的,甚至没有关闭)
function Models(mongoose) {
var Counters = require('./counters')(mongoose);
var User = require('./user')(mongoose);
var Token = require('./token')(mongoose);
var Team = require('./team')(mongoose);
var Role = require('./role')();
var Layer = require('./layer')(mongoose, counters);
var Feature = require('./feature')(mongoose, counters, async);
}
module.exports = Models;
我还应该从 app.js 传入 mongoose,因为我需要在那里连接到 mongo? IE。我可以在 index.js 中再次要求它,但我不确定在不同的文件中要求相同的模块是否是不好的做法。
编辑:(这是我的模型)
抱歉,我在模型类中添加了“访问器”类型的函数。 IE。我想为每个模型提供一个公共接口。
user.js:
module.exports = function(mongoose) {
// Creates a new Mongoose Schema object
var Schema = mongoose.Schema;
// Collection to hold users
var UserSchema = new Schema({
username: { type: String, required: true },
password: { type: String, required: true },
},{
versionKey: false
}
);
// Creates the Model for the User Schema
var User = mongoose.model('User', UserSchema);
var getUserById = function(id, callback) {
User.findById(id, callback);
}
var getUserByUsername = function(username, callback) {
var query = {username: username};
User.findOne(query, callback);
}
return {
getUserById: getUserById,
getUserByUsername: getUserByUsername
}
}
【问题讨论】: