私はまともなサイズのプロジェクトを持っており、少し再構築する必要があります。
ノードの ORM としてマングースを使用しています。すべてのマングース モデルを「models」というフォルダに入れたいと思います。これを行うと、すべてのモデルを取得して保存するように、モデルフォルダーに 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;
また、mongo に接続する必要があるため、app.js から mongoose を渡す必要がありますか? 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
}
}