Javascript 如何在Sequelize ORM中限制连接行(多对多关联)?
Sequelize定义了两个模型:Post和具有多对多关联的标记Javascript 如何在Sequelize ORM中限制连接行(多对多关联)?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,Sequelize定义了两个模型:Post和具有多对多关联的标记 Post.belongsToMany(db.Tag, {through: 'post_tag', foreignKey: 'post_id', timestamps: false}); Tag.belongsToMany(db.Post, {through: 'post_tag', foreignKey: 'tag_id',timestamps: false}); 在“标签”页面上,我想获取标签数据、相关帖子,并用分页方式显示它
Post.belongsToMany(db.Tag, {through: 'post_tag', foreignKey: 'post_id', timestamps: false});
Tag.belongsToMany(db.Post, {through: 'post_tag', foreignKey: 'tag_id',timestamps: false});
在“标签”页面上,我想获取标签数据、相关帖子,并用分页方式显示它们。所以我应该限制帖子。但如果我试着把它们限制在“包含”之内
我发现以下错误:
Unhandled rejection Error: Only HasMany associations support include.separate
如果我尝试切换到“HasMany”关联,我会得到以下错误
Error: N:M associations are not supported with hasMany. Use belongsToMany instead
从另一方面来看,文档称限制选项“仅支持include.separate=true”。如何解决这个问题?这里有同样的问题。从我收集的信息来看,要使用limit/offset,您需要include.separate,它还不支持belongTomany关联,因此在撰写本文时您尝试的操作不受支持 已经有人在做了,你可以追踪
.我知道这个问题由来已久,但对于那些仍在经历这个问题的人来说,有一个简单的解决方法 由于Sequelize添加到关联模型的实例中,因此您可以将代码重组为如下内容:
const tag = await Tag.findOne({ where: { url: req.params.url } });
const tagPosts = await tag.getPosts({ limit: 10 });
这将与代码的工作方式完全相同,但可能存在限制和偏移。该页面不起作用
const tag = await Tag.findOne({ where: { url: req.params.url } });
const tagPosts = await tag.getPosts({ limit: 10 });