Stocker des modèles dans un dossier, utilisez index.js pour les exiger tous
J'ai une taille décente projet et j'ai besoin de faire un peu de restructuration.
Je suis à l'aide de la mangouste comme mon ORM pour le nœud. Je voudrais mettre toutes mes mangouste modèles dans un dossier appelé "modèles". J'ai lu que quand je fais ce que je peut mettre un index.js fichier dans le dossier de modèles tels que est va tirer dans tous les modèles et de les stocker.
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
...
Je suis coincé sur exactement ce que j'ai besoin de faire dans la index.js pour le retour de tous mes modèles
index.js (c'est ce que j'ai essayé, pas même à proximité)
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;
Aussi dois-je passer de la mangouste app.js depuis que j'ai besoin là-bas pour se connecter à mongo? I. E. je peux exiger de nouveau dans la index.js mais je ne sais pas si exigeant le même module dans les différents fichiers est une mauvaise pratique.
EDIT: (voici une de mes modèles)
Désolé j'ai oublié de mentionner que j'ai ajouter "accesseur" du type de fonctions dans mes classes de modèle. I. E., je voudrais présenter une interface publique pour chaque modèle.
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
}
}
source d'informationauteur lostintranslation
Vous devez vous connecter pour publier un commentaire.
Dans node.js les modules sont mis en cache après la première fois qu'ils sont chargés. Si vous n'avez pas besoin de passer le
mongoose
de l'app.js.Par exemple, dans models/index.js:
dans models/user.js:
dans app.js:
En savoir plus sur les modules de mise en cache dans node.js:
http://nodejs.org/api/modules.html#modules_caching
Une autre très belle approche pour appeler tous les modèles dans un simple et propre pourrait être celle-ci:
Structure de projet:
app.js