【问题标题】:sequelize Not unique table/aliassequelize 不是唯一的表/别名
【发布时间】:2019-04-28 16:27:09
【问题描述】:

亲爱的我遇到了一个问题,因为包含加入一个表会抛出另一个表然后我立即包含它

如果我通过 (Provider) 访问 (User) 表,则 (User) 表应返回提供商名称

如果直接包含(用户)表,这意味着获取客户名称

但我收到以下错误

ER_NONUNIQ_TABLE:不唯一的表/别名:'Provider.User'

代码:

models.Order.findOne({

        where: {

            id: req.params.id



        },attributes: ['orderStatus','id','serviceId','providerId','orderDescription',"orderScheduledDate",'userLat','userLng','createdAt'],
        include: [
            {
                model: models.Provider,
                attributes: ['id','userId'],
                include : [{

                    model : models.User,
                    attributes: ['firstName','lastName','phoneNumber']

                },{


                    model : models.User,
                    attributes: ['phoneNumber']
                }]
            }
        ]
    })

【问题讨论】:

    标签: mysql node.js database sequelize.js


    【解决方案1】:

    如果你想包含两次相同的模型,你需要为关系/关联分配一个别名:

    Provider.belongsTo/haveMany/any...(User, {as: 'ProviderUser'}); //<------ HERE
    Provider.belongsTo/haveMany/any...(User, {as: 'User'}); //<------ HERE
    
    include: [{
        model: models.Provider,
        attributes: ['id', 'userId'],
        include: [{
            model: models.User,
            as : 'User' //<---------- HERE
            attributes: ['firstName', 'lastName', 'phoneNumber']
        }, {
            model: models.User,
            as : 'ProviderUser' //<---------- HERE
            attributes: ['phoneNumber']
        }]
    }]
    

    【讨论】:

    • 很多thnx兄弟,我做了'as'但没有在模型中关联它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多