Как найти данные исходной таблицы из целевой таблицы в sequelize? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть две таблицы, traders и messages

Трейдеры ассоциируются с сообщениями следующим образом

traders.hasMany(models.messages, {as: 'sender',foreignKey : 'senderId'});
traders.hasMany(models.messages, {as: 'reciever',foreignKey : 'recieverId'});

теперь, когда я пытаюсь найти имя трейдера вместе со всеми сообщениями, используя следующий код

   ctx.body = await ctx.db.messages.findAll({
        include:[{
            model: ctx.db.traders,
            as:'sender'
        }],
        attributes:['type',['data','message'],'createdAt','senderId','name'],
        where:{
            conversationId:ctx.request.body.conversationId
        }
    })

Я получаю следующую ошибку

SequelizeEagerLoadingError: traders is not associated to messages!

1 Ответ

0 голосов
/ 17 сентября 2018

Попробуйте ассоциацию от обеих моделей как,

traders.hasMany(models.messages, {
    as: 'sender',
    foreignKey: 'senderId'
});

messages.belongsTo(models.traders, {
    as: 'sender',
    foreignKey: 'senderId'
});
...