内容:
问题:我应该得到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 }
],
} )
答案 0 :(得分:0)
在FindAll的外部查询中添加一个LIMIT也将限制所包含结果的数量。
虽然一开始令人困惑,但这是预期的功能。