sequelize mysql 多表联查属性名变成了‘db_name.attribute’ 如何改成 'attribute'?

发布于 2022-09-12 04:50:03 字数 998 浏览 39 评论 0

数据是源于第三方api同步过来的数据,所以我不想给他们在mysql上设置关联关系
所以我直接在 service 里设置关联关系

XbMoneyAllocation.belongsTo(XbHasClass, { foreignKey: 'contractProductId', targetKey: 'id' })
XbHasClass.belongsTo(XbProduct, { foreignKey: 'productId', targetKey: 'id' })

下面是执行查询

let res = await XbMoneyAllocation.findAll({
    raw: true,
    where: {
        fundsChangeHistoryId: { [Op.in]: ids }
    },
    attributes: ['changeAmount'],
    include: [{
        model: XbHasClass,
        attributes: ['productId'],
        include: [{
            model: XbProduct,
            attributes: ['belongFeeTypeId']
        }]
    }]
 })

这里得到的是结果
这里有两个问题需要解决
1、属性带上了表名
2、xb_has_class.productIdxb_has_class.xb_product.id 重复出现了

{
    "changeAmount": 1734,
    "xb_has_class.productId": 454905,
    "xb_has_class.xb_product.id": 454905,
    "xb_has_class.xb_product.belongFeeTypeId": 2019438
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文