Есть ли какие-либо известные проблемы с параметром 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, похоже, не соблюдает его.
Заранее спасибо!