限制 Sequelize 中的延迟加载关联

Dun*_*Luk 1 javascript node.js sequelize.js graphql

我使用Sequelize 5作为 GraphQL API 的 ORM,但在查询关联数据时遇到了性能问题。

假设我有一个User有很多Posts 的对象,所以我的模型定义如下所示:

class User extends Model { }
User.init({ name: Sequelize.STRING }, { sequelize });

class Post extends Model { }
Post.init({ content: Sequelize.STRING }, { sequelize });

User.hasMany(Post);
Run Code Online (Sandbox Code Playgroud)

现在我已经User从数据库中获取了一个模型,并且我想查询x该用户的大量帖子。我知道我可以使用 获取所有帖子user.getPosts(),但这会返回比我需要的更多的记录。

我找到了这个答案,它解释了如何在使用选项急切加载关系时应用限制include,但就我而言,我想延迟加载关系。其原因在于 GraphQL 解析器的工作方式。

所以我的问题是:如何获取x用户的第一篇帖子?

Dan*_*den 8

您可以将其他find选项传递给 getter。虽然这里简要提到了这一点,但并没有很好的记录。所以你可以这样做:

user.getPosts({
  limit: 10,
  offset: 100,
  where: { /* whatever */ },
  order: [ /* whatever */ ],
  transaction,
  etc.
})
Run Code Online (Sandbox Code Playgroud)