Запрос созданной записи в той же транзакции Sequelize - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть две модели с родительско-дочерними отношениями, т.е. у клиента много пользователей. Используя транзакции 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
}

Я ожидал получить клиента здесь, но на самом деле это не так. Я не могу судить, где я делаю неправильно.

...