У меня есть две модели с родительско-дочерними отношениями, т.е. у клиента много пользователей.
Используя транзакции sequelize в express-js, я создаю записи для клиентов и пользователей.
Модель пользователя имеет хук afterCreate
, который запускает функцию отправки приветственного письма. После создания клиентской записи и получения client_id
в пользовательской записи, когда я пытаюсь запросить клиента, я получаю нулевую запись.
Я использую async / await с этим потоком вместо обещаний, но я новичок в дальнейшем.
controller.js
async signUp(req, res){
const clientParams = {//some Data};
try {
transaction = await Models.sequelize.transaction();
Models.Client.create(clientParams, {
transaction,
include: [{ model: Models.User }],
});
catch(e){
console.log(e);
}
}
user.js
init(sequelize) {
super.init({
// someFields
}, {
sequelize,
hooks: {
afterCreate: async (user) => {
await this.sendWelcomeEmail(user);
},
}
}
}
static async sendWelcomeEmail(user){
// {user} the user record
console.log(user.client_id); // prints the client id associated to the user
const client = await user.getClient();
// Querying through association client gets null
//or
// Querying the client with the primary key also gives null
const client = await Models.Client.findOne({ where: { id: user.client_id } });
// both the above way the client received is null
}
Я ожидал получить клиента здесь, но на самом деле это не так. Я не могу судить, где я делаю неправильно.