将Sequelize原始查询绑定到模型



我知道Sequelize可以使用原始查询,https://sequelize.org/master/manual/raw-queries.html,以执行一些自定义的查询操作。有没有一种方法可以创建一个模型方法来运行我的原始查询?

例如,如果我有一个型号Project,我尝试的是:

关于项目模型文件:

const Project = (sequelize, DataTypes) =>
sequelize.define(
"Project",
{
projectId: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
field: "Project_ID",
autoIncrement: true,
},
...
dateUpload: {
type: DataTypes.DATE,
field: "Date_Upload",
defaultValue: Sequelize.NOW,
},
}
)

Project.myCustomQuery = async (projectId) => {
const query = "select * ..."
const project = await sequelize.query(query)
return project
}
module.exports = Project

在控制器上,我使用:

const project = Project.myCustomQuery(projectId)

并返回此项目。然而,它错误地说";Project.myCustomQuery不是一个函数"。

我应该如何将函数添加到模型类中?

您需要在sequelize.define方法返回的模型对象上添加类/实例方法

下面的模型类将为您工作

module.exports = (sequelize, DataTypes) => {
const Project = sequelize.define( "Project", {
projectId: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
field: "Project_ID",
autoIncrement: true,
},
...
dateUpload: {
type: DataTypes.DATE,
field: "Date_Upload",
defaultValue: Sequelize.NOW,
},
}
Project.myCustomQuery = async (projectId) => {
const query = "select * ...";
const project = await sequelize.query(query);

return project;
}

return Project;
};

请查看此处以获取更多参考

https://sequelizedocs.fullstackacademy.com/instance-and-class-methods/

最新更新