这是一个基于我对Node.js缺乏理解的问题。我正在尝试整理我的代码,并遇到了问题。
我定义了一个续集模型如下:
module.exports = (sequelize, Sequelize) => {
// Define model
let model= require('./lib/define')(sequelize, Sequelize);
// Define model methods
model.getOne = function(params) {
return sequelize.models.model.findOne({
include: [{
model: sequelize.models.model2,
include: [
{
model: sequelize.models.model3,
attributes: ['column1', 'column2'],
where: {
owner: params.param1,
name: params.param2,
}
},
{
model: sequelize.models.model4
}
]
}],
where: {
// other clauses
}
});
};
return model;
};
这很好用。创建模型,我可以通过我的应用程序以及基于类的方法访问它。
但是,我想将更多基于类的方法合并到这个模型中,并且为了帮助防止凌乱的代码,我想将它们放在单独的文件中。问题是,这些方法需要访问sequelize对象,但我不知道如何将它放入我的应用程序中。我不想每次调用这个方法时都要将sequelize对象和我的参数对象一起传递。
我对基于类的方法的当前文件是:
module.exports = function(params) {
return sequelize.models.model.findOne({
include: [{
model: sequelize.models.model2,
include: [
{
model: sequelize.models.model3,
attributes: ['column1', 'column2'],
where: {
owner: params.param1,
name: params.param2,
}
},
{
model: sequelize.models.model4
}
]
}],
where: {
// other clauses
}
});
};
答案 0 :(得分:1)
从它的外观来看,您似乎需要models
而不是sequelize
对象。
只需要在帮助文件中输入models
文件即可获得models/index.js
个对象。现在,您可以使用models.model2
超出所有模型。
例如,像这样
const models = require('../../models');
models.model2.findAll()