gpt4 book ai didi

node.js - Sequelize 移动类方法到单个文件

转载 作者:行者123 更新时间:2023-12-03 22:27:44 26 4
gpt4 key购买 nike

这是一个基于我对 Node.js 普遍缺乏理解的问题。我正在尝试整理我的代码,但遇到了问题。

我定义了一个 Sequelize 模型如下:

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
}
});
};

最佳答案

从它的外观来看,您需要 models 而不是 sequelize 对象。

您可以通过在帮助文件中简单地要求 models 文件来获取 models/index.js 对象。现在您可以使用 models.model2 超出所有模型。

例如,这样的事情

const models = require('../../models');
models.model2.findAll()

关于node.js - Sequelize 移动类方法到单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50329773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com