一起使用 @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,要么只写自己的分页插件
我正在尝试在我的 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,要么只写自己的分页插件