Postg sql 11 Создание объекта с использованием UUID, но beforeCreate не запускается для обновления идентификатора с помощью UUID перед сохранением - PullRequest
1 голос
/ 21 июня 2020

Похоже, это происходит при использовании объекта в качестве таблицы соединения в ассоциации M: N.

Ловушка beforeCreate не обновляет идентификатор перед обновлением БД.

Я создал ловушка экземпляра в postgresql версии 11 в модели экземпляра.

Я попытался использовать оба метода 2 и 3, ни один из которых не работает. Столбец id не обновляется с помощью UUID, сгенерированного во время создания

Когда я регистрирую значение в хуке, у меня есть уникальный uuid, но при создании SQL используется значение uuid по умолчанию, в результате в уникальной ошибке нарушения.

Я ожидал, что значения в хуке before будут использоваться для оператора создания БД

Log messages:
UserPersonalRelationship.beforeCreate:  19bbc538-c82e-41f5-9bd3-f0eabf9c0193
UserPersonalRelationship.beforeCreate:  3af7d252-ecfe-49e9-b850-a72a78e9773d

В сообщении об ошибке postgresql значение поля отображается как:

fields: { id: '2cfe1fb0-4b3c-496b-80fe-f9073302afe8' },

Моя модель экземпляра:

"use strict";
const { uuid } = require("uuidv4");
module.exports = (sequelize, DataTypes) => {
const UserPersonalRelationship = sequelize.define(
    "UserPersonalRelationship",
    {
        User_rowID: DataTypes.UUID,
        PersonalRelationship_rowID: DataTypes.UUID,
    },
    {}
);
UserPersonalRelationship.associate = function (models) {
    // associations can be defined here
};

UserPersonalRelationship.beforeCreate(
    async (userPersonalRelationship, options) => {
        const objUUID = uuid();
        userPersonalRelationship.id = objUUID;
        console.log("UserPersonalRelationship.beforeCreate: ", objUUID);
    }
);
UserPersonalRelationship.addHook(
    "beforeValidate",
    (userPersonalRelationship, options) => {
        userPersonalRelationship.id = uuid();
        console.log("Add hook called");
    }
);

return UserPersonalRelationship;
};
...