gpt4 book ai didi

pagination - 限制在多对多 Sequelize 中不起作用

转载 作者:行者123 更新时间:2023-12-03 22:31:32 29 4
gpt4 key购买 nike

限制并不像我们希望的那样工作。我们有一个项目模型,一个标签模型,以及这两者之间的多对多关系,我们想要的只是获取限制 = 10 的数据。

Project.findAndCountAll({
include: {
model: TagModel,
as: 'tags',
required: false,
},
distinct: true,
subQuery: false,
limit: 10
})

连接返回的数据是 74 行,将限制结果应用于前 10 行,但这不是正确的数据。前10条记录中返回的proejcts只是前5个projects,因为多对多join,其他的因为10条的限制被丢弃了。
我不希望将限制应用于连接后的最终结果,这会导致此问题。我只想将 10 个限制应用于项目,然后连接应该与标签一起发生,并且这 10 个项目的所有标签都应该返回,无论它们有多少(标签也可以大于 10)。
我试图在包含中限制如下
Project.findAndCountAll({
include: {
model: TagModel,
as: 'tags',
required: false,
limit: 10,
separate: true
},
distinct: true,
subQuery: false,
})
但它给出了错误

"Only HasMany associations support include.separate


这似乎意味着,在 include 中我们不能在多对多关系中应用限制?

最佳答案

型号:A.js

"use strict";
const {
Model
} = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class A extends Model {
static associate(models) {
// define association here
this.belongsTo(models.B, {
foreignKey: "bId",
as: "B",
});
this.belongsTo(models.C, {
foreignKey: "cId",
as: "C",
});

}
}
A.init({
bId: DataTypes.INTEGER,
cId: DataTypes.INTEGER,
}, {
sequelize,
modelName: "A",
timestamps: false,
tableName: 'A'
});
return A;
};
型号:B.js
"use strict";
const {
Model
} = require("sequelize");
module.exports = (sequelize, DataTypes) => {
class B extends Model {
static associate(models) {
// define association here
this.hasMany(models.A, { // This is must: hasMany
foreignKey: "bId",
as: "A",
});
}
}
B.init({
orgId: DataTypes.INTEGER,
contentId: DataTypes.STRING,
}, {
sequelize,
modelName: "B",
timestamps: false,
tableName: 'B'
});
return B;
};
        var B = await db.B.findAll({
limit: 2,
include: [{
model: db.A,
as: 'A',
required: false,
limit: 2,
}
]
})
console.log(JSON.parse(JSON.stringify(B)))
输出
[
{
id: 1,
orgId: 101,
contentId: 'content1',
A: [ [Object], [Object] ]
},
{
id: 2,
orgId: 101,
contentId: 'content1',
A: [ [Object], [Object] ]
}
]

关于pagination - 限制在多对多 Sequelize 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66503875/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com