Sequelize - 仅包括找到一个结果
Posted
技术标签:
【中文标题】Sequelize - 仅包括找到一个结果【英文标题】:Sequelize - Includes Only Finding One Result 【发布时间】:2019-03-07 16:03:15 【问题描述】:什么:
Films 表和 Credits 表,具有 一对多 关系。 我正在对 Film 和 Credits 运行 findAll 查询。
问题:我应该得到大约 20 个信用,我只得到 1 个。
编辑问题:我将 LIMIT 设置为 20(我在数据库中有 28 个)。我仍然每部电影获得 1 个学分,但我没有获得 20 部电影……有时是 12 部电影,有时是 16 部电影。不一致。
电影模特
module.exports = (sequelize, DataTypes) =>
const Film = sequelize.define('Film',
name: type: DataTypes.STRING, allowNull: false ,
description: type: DataTypes.STRING, allowNull: false
,
freezeTableName: true
);
Film.associate = (models) =>
Film.hasMany(models.Credit, foreignKey: 'film_id', as: 'credits' );
;
return Film;
;
信用模型
module.exports = (sequelize, DataTypes) =>
const Credit = sequelize.define('Credit',
film_id: type: DataTypes.INTEGER, allowNull: false ,
name: type: DataTypes.STRING
,
freezeTableName: true
);
Credit.associate = (models) =>
Credit.belongsTo(models.Film, foreignKey: 'film_id', onDelete: 'CASCADE' );
return Credit;
;
查询
Film.findAll(
subQuery: false,
order: sequelize.literal('rand()'),
limit: 20,
include: [
model: Credit, as: "credits", required: true, all: true
],
)
【问题讨论】:
是因为limit: 1
属性吗?
我认为你是正确的@Cat 我正在进一步阅读它,但是关于设置 findAll 限制的一些事情使它表现得像这样。如果我没有限制,一切正常。
【参考方案1】:
向 FindAll 的外部查询添加 LIMIT 也会限制包含结果的数量。
虽然起初令人困惑,但这是预期的功能。
【讨论】:
以上是关于Sequelize - 仅包括找到一个结果的主要内容,如果未能解决你的问题,请参考以下文章
使用 sequelize 可以进行 TRANSACTION 吗?