创建一个更新其他实例的新实例,Sequelize,NodeJs,Express,Postgres
Creating a new instance that updates others, Sequelize, NodeJs, Express, Postgres
我正在使用 Nodejs、Express 和 Sequelize。我有一个名为 Categories 的 Postgres table 和一个 viewOrder 字段:
module.exports = (sequelize, DataTypes) => {
const Category = sequelize.define(
'Category',
{
name: DataTypes.STRING,
viewOrder: {
type: DataTypes.INTEGER,
allowNull: false,
unique: true
}
},
{}
);
return Category;
};
插入新记录可能会带来问题,因为如果现有记录的查看顺序为 [1, 2, 3, 4, 5],而新记录的查看顺序为 4 ,那么现在的4必须改成5,现在的5必须改成6
(我强制这个订单视图是连续的数字,从前端看)
我想一个简单的 Category.create 是不够的
更新也可能会出问题,如果我想将viewOrder为5的记录更改为viewOrder为3,那么view order为3和4的记录也必须改变,连同我们的那个正在更新
我如何在 Sequelize 中做到这一点?
提前致谢,
拉斐尔
依靠前端来维护 viewOrder
的唯一值是个糟糕的主意。 Sequelize
也是如此。最可靠的方法是由 PostgreSQL 本身生成这样的唯一值,要么创建一个序列(如果您不需要重用生成的值),要么在类别 table.
上添加触发器
我正在使用 Nodejs、Express 和 Sequelize。我有一个名为 Categories 的 Postgres table 和一个 viewOrder 字段:
module.exports = (sequelize, DataTypes) => {
const Category = sequelize.define(
'Category',
{
name: DataTypes.STRING,
viewOrder: {
type: DataTypes.INTEGER,
allowNull: false,
unique: true
}
},
{}
);
return Category;
};
插入新记录可能会带来问题,因为如果现有记录的查看顺序为 [1, 2, 3, 4, 5],而新记录的查看顺序为 4 ,那么现在的4必须改成5,现在的5必须改成6
(我强制这个订单视图是连续的数字,从前端看)
我想一个简单的 Category.create 是不够的
更新也可能会出问题,如果我想将viewOrder为5的记录更改为viewOrder为3,那么view order为3和4的记录也必须改变,连同我们的那个正在更新
我如何在 Sequelize 中做到这一点?
提前致谢,
拉斐尔
依靠前端来维护 viewOrder
的唯一值是个糟糕的主意。 Sequelize
也是如此。最可靠的方法是由 PostgreSQL 本身生成这样的唯一值,要么创建一个序列(如果您不需要重用生成的值),要么在类别 table.