一起使用 @casl/mongoose 和 mongoose-paginate-v2

Using @casl/mongoose & mongoose-paginate-v2 together

我正在尝试在我的 express.js 应用程序中使用 @casl/mongoose with mongoose-paginate-v2,但问题是两个库都必须在 model 对象上使用。

  // trying this
  const results = await Person
      .accessibleBy(req['ability'])
      .paginate({}, options);

  // or this, the same problem
  const results = await Person
      .paginate({}, options)
      .accessibleBy(req['ability']);

在这两种方式中,我都得到了 accessibleBy/paginate is not a function 因为正如我所说,两个库都必须用于模型(在我的例子中是 Person)对象.

非常感谢任何帮助或建议。

@casl/mongoose支持mongoose的静态和查询方法。所以,你可以这样做:

Person.findOne({ _id: id }).accessibleBy(ability).where({ createdAt: { $lt: new Date() } })

// or
Person.accessibleBy(ability).findOne({ _id: id }).where({ createdAt: { $lt: new Date() } })

同时分页插件只支持静态方法,因为它向数据库发送多个查询,所以(可能)不可能实现你想要的。要么和那个包的作者谈谈,让他用那个做 smth,要么只写自己的分页插件