Sequelize targetKey, похоже, не вступает в силу с принадлежащим ToMany - PullRequest
0 голосов
/ 23 октября 2019

Есть ли какие-либо известные проблемы с параметром ownToMany и targetKey?

Определение моей модели выглядит следующим образом:

'use strict';
module.exports = (sequelize, DataTypes) => {
  const Keyword = sequelize.define('Keyword', {
    name: DataTypes.STRING
  }, {});
  Keyword.associate = function(models) {
    Keyword.belongsToMany(models.Location, {
      through: models.SearchRequest
    })

    Keyword.belongsToMany( models.Ranking, {
      targetKey: 'searchRequestId',
      otherKey: {
        name: 'id'
      },
      through: {
        model: models.SearchRequest,
      }
    })
  }
  return Keyword;
};

После выполнения приведенных ниже команд:

kwrr > keyword = await Keyword.findOne()()
kwrr > await keyword.getRankings()

Произведенный sql выглядит следующим образом:

Executing (default): 
SELECT 
`Ranking`.`id`, `Ranking`.`googlePageRank`, `Ranking`.`googleResultRank`, 
`Ranking`.`searchRequestId`, `Ranking`.`createdAt`, `Ranking`.`updatedAt`, 
`SearchRequest`.`locationId` AS `SearchRequest.locationId`, `SearchRequest`.`keywordId` AS 
`SearchRequest.keywordId`, `SearchRequest`.`websiteId` AS `SearchRequest.websiteId`, 
`SearchRequest`.`createdAt` AS `SearchRequest.createdAt`, `SearchRequest`.`updatedAt` AS 
`SearchRequest.updatedAt`, `SearchRequest`.`KeywordId` AS `SearchRequest.KeywordId`, 
`SearchRequest`.`LocationId` AS `SearchRequest.LocationId`
FROM `Rankings` AS `Ranking` 
  INNER JOIN `SearchRequests` AS `SearchRequest` 
    ON `Ranking`.`id` = `SearchRequest`.`id` AND 
   `SearchRequest`.`KeywordId` = 101;

Я ожидаю Ranking.searchRequestId вместо Ranking.id. Так что INNER JOIN SearchRequests AS SearchRequest ON Ranking.searchRequestId = SearchRequest.id.

Согласно источнику , targetKey должен позволить это сделать.

Есть идеи, почему он не действует?

ps Я проследовал через источник, и значение targetKey передается, как и ожидалось, но созданный sql, похоже, не соблюдает его.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...