Похоже, это происходит при использовании объекта в качестве таблицы соединения в ассоциации 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;
};