创建一个更新其他实例的新实例,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.

上添加触发器