我正在使用Node,Express,Sequelize和Mssql在现有数据库架构之上构建REST api。
我无法/不允许修改现有数据库,因为有一个遗留应用程序依赖于其结构以及许多硬编码的SQL查询。
我已经阅读了Sequelize的文档,但没有找到有关如何定义模型来实现此目的的任何信息。这可能吗,如果可以,怎么办?
{
id: 1234,
title: "abc"
images: ["img.jpg", "img.jpg", "img.jpg"]
}
+----+-------+----------+----------+----------+
| id | title | image_1 | image_2 | image_3 |
+----+-------+----------+----------+----------+
| 1 | abc | img1.jpg | img2.jpg | img3.jpg |
+----+-------+----------+----------+----------+
const News = sequelize.define(
"news",
{
id: Sequelize.INTEGER,
title: Sequelize.TEXT,
images: ????
}
)
答案 0 :(得分:2)
您可以尝试使用getter设置“图像”字段:
images: {
type: Sequelize.ARRAY(Sequelize.STRING),
get() {
const imageFields = ['image_1', 'image_2', 'image_3'];
return imageFields.map(this.getDataValue);
},
}
UPD:以上方法可用于在现有属性中进行定义。
如果要在模型中制作,请尝试以下操作:
const News = sequelize.define(
"news",
{ ... },
{
getterMethods: {
name() {
const imageFields = ['image_1', 'image_2', 'image_3'];
return imageFields.map(field => this[field]);
}
}
}
)