在同一Sequelize事务中查询创建的记录

时间:2019-04-17 20:14:18

标签: node.js express sequelize.js asynchronous-javascript

我有两个具有父子关系的模型,即客户有很多用户。 在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
}

我希望能把客户带到这里,但实际上不是。我无法判断我在哪里做错了。

0 个答案:

没有答案