我有两个具有父子关系的模型,即客户有很多用户。 在express-js中使用sequelize事务,我正在为客户和用户创建记录。
用户模型具有一个afterCreate
挂钩,该挂钩触发了发送欢迎电子邮件的功能。创建客户记录并在用户记录中获得client_id
后,当我尝试查询客户时,我得到一个空记录。
我在此流程中使用async / await而不是promise,但我是续集的新手。
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
}
我希望能把客户带到这里,但实际上不是。我无法判断我在哪里做错了。