如何在sequelize中从目标表中查找源表的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sequelize中从目标表中查找源表的数据?相关的知识,希望对你有一定的参考价值。

我有两张桌子,tradersmessages

交易者与以下消息相关联

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!
答案

尝试从两个模型的关联,如,

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

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

以上是关于如何在sequelize中从目标表中查找源表的数据?的主要内容,如果未能解决你的问题,请参考以下文章

从不存在的源表到目标表的大量数据

包含来自多个源表的数据的维度中自然键的最佳实践

如何使 Google BQ 合并声明起作用?

如何更新源表中的表格数据

在 sequelize 和 apollo-server 中从目标解析源关联时理解“包含”

oracle 中怎么把一个表中的数据完全复制到另外一个表