Sequelize не использует псевдоним поля из модели - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть модель с именем proxyPool со следующими полями:

poolId: {
    type: DataTypes.INTEGER,
    references: {
        model: 'pool',
        key: 'id',
    },
    field: 'pool_id',
},
proxyId: {
    type: DataTypes.INTEGER,
    references: {
        model: 'proxy',
        key: 'id',
    },
    field: 'proxy_id',
},

Это таблица N: M для двух таблиц, которые имеют следующие ассоциации:

proxy.associate = (models) => {
    proxy.belongsToMany(models.pool, {
        through: models.proxyPool,
        foreignKey: 'proxy_id',
    });
};

и

pool.associate = (models) => {
    pool.belongsToMany(models.proxy, {
        through: models.proxyPool,
        foreignKey: 'pool_id',
    });
};

Когда я вызываю proxyPool.findOrCreate({where: {proxyId, poolId}}), он говорит, что столбец proxyPool.proxyId не существует, но в сыром SQL я вижу:

SELECT "id", "pool_id" AS "poolId", "createdAt", "updatedAt", "pool_id", "proxy_id" 
    FROM "portnoi"."proxy_pool" AS "proxyPool" 
    WHERE "proxyPool"."proxyId" = '3' AND "proxyPool"."pool_id" = '1' LIMIT 1;

Почему он использует псевдоним для poolId = pool_id, но не использует псевдоним, описанный в модели для proxyId = proxy_id?

1 Ответ

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

Вы пытались сделать такой запрос?

proxyPool.findOrCreate({
    where: {
        proxyId: {
            [Op.eq]: proxyId,
        }, 
        ...
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...