如何创建未附加到模型的查询

How to create a query not attached to a model

Strapi 使用 bookshelf(或 Mongoose)来管理它管理的实体的模型。这相当方便,在查询这些模型中的数据时很有用。

当我尝试执行聚合查询时,我的问题就来了。想象一下,如果您有一个包含两个字段的 Todo 模型:namedone,您可以通过执行(在 services/Todo.js):

Todo.query().fetchAll()

但我想要的是计算已完成和未完成的待办事项数量。本质上,我想执行: SELECT done, count(*) as howMany FROM todo GROUP BY done

我可以创建查询,它会执行它...但它失败了,因为它试图使用查询的结果来组合 Todo 对象,但它抱怨没有 name

所以,问题是:strapi 是否提供了 "general purpose" 查询功能,我可以使用它来 运行 模型分离查询?

我希望能够使用与 strapi 相同的数据库连接。

这不直观,文档对此也不清楚。 但是您可以在 strapi.connections.default.

中访问 mongoose 和 knex 实例

希望对您有所帮助。


使用示例如下:

const knexQueryBuilder = strapi.connections.default('mytable');
knexQueryBuilder.where('myfield','=','myvalue');
const resp = await knexQueryBuilder.then();
console.log('Results: ', resp);