sequelize Не уникальная таблица / псевдоним - PullRequest
0 голосов
/ 27 ноября 2018

Уважаемые, у меня возникла проблема, потому что включенное присоединение к таблице создает другую таблицу, а затем я включаю ее немедленно

Таблица (Пользователь) должна возвращать имя поставщика, если я получаю доступ к таблице (Пользователь) через (Поставщик)

если включить таблицу (пользователя), то это означает получение имени клиента

, но я получаю следующую ошибку

ER_NONUNIQ_TABLE: Не уникальная таблица / псевдоним: 'Provider.Пользователь '

Код:

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']
                }]
            }
        ]
    })

1 Ответ

0 голосов
/ 27 ноября 2018

Если вы хотите включить одну и ту же модель дважды, вам необходимо назначить псевдоним для отношения / ассоциации:

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']
    }]
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...