2017-06-07 46 views
1

您可以检索模型猫鼬像这样:获取(联想)猫鼬车型的阵列

提醒用户= mongoose.model(“用户”);我想要得到这些模型的关联数组。 有没有一些聪明的方法来获取使用对象解构的模型列表?喜欢的东西:

const {User, Employees, Managers} = mongoose.model('x'); 

我目前的解决方案是这样:

/project 
    /models 
    index.js 

其中index.js看起来像:

module.exports = { 
    User: require('./user'), 
    Employee: require('./employee'), 
    Manager: require('./manager'), 
}; 

凡user.js的,employee.js和经理.js文件看起来像:

let mongoose = require('mongoose'); 
let Schema = mongoose.Schema; 

let userSchema = new Schema({...}); 

module.exports = mongoose.model('User', userSchema, 'users'); 

然后,我可以这样做:

const {User, Employees, Managers} = require('./models'); 

但是我正在寻找一个更好的解决方案,无需手动工作,如果可能的。

回答

2
const models = {}; 
mongoose.modelNames().forEach(function(modelName){ 
    models[modelName] = mongoose.model(modelName); 
}); 
console.log(models); 
+0

这将工作,但为了避免简单的竞争条件,我可能仍然需要在这里手动导入代码上方的每个模型。 –

+0

你能举一个比赛条件的例子吗?我认为你不需要独立导入文件,模型可以被上面的代码访问和安全地使用。我可能是错的。 –

+0

在我们的应用程序和大多数真实应用程序中,文件的加载顺序非常复杂。在任何代码在你的答案中调用代码之前,必须确保所有模型都加载,不那么容易。 –