我正在使用Nodejs、Express和Sequelize。我有一个名为Categories的Postgres表,其中有一个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
(我强制这个订单视图是连续的数字,从前端(
我想一个简单的分类创建是不够的
更新也可能会导致问题,如果我想将viewOrder为5的记录更改为viewOrder为3,那么也必须更改view order为3和4的记录,以及我们正在更新的
我如何在Sequelize中做到这一点?
提前感谢
Rafael
依赖前端来维护viewOrder
的唯一值是一个糟糕的想法。Sequelize
也是如此。最可靠的方法是通过PostgreSQL本身生成这样的唯一值,或者创建一个序列(如果您不需要重用生成的值(,或者在Category表上添加一个触发器。