Strapi 深度排序
Strapi deep sort
假设我 modelA
在 modelB
上有一个外键。
在api/modelA/services/modelA.js
中,我可以定义:
// [...]
module.exports = {
/**
* Promise to fetch all records
*
* @return {Promise}
*/
find (params, populate) {
params = {
...params,
_sort: 'field_from_model_a:DESC,other_field_model_a:ASC'
}
populate = [
'modelB'
]
return strapi.query('post').find(params, populate)
},
// [...]
这让我可以对我的查询进行排序,我还可以在使用
时过滤深度关系
curl -X GET "http://localhost:1337/modelA?modelB.field_from_model_b=example_value
但我找不到如何在 modelB.some_field
上排序。
如果我写 _sort: 'modelB.field_model_b:ASC'
,我会收到一条错误消息:缺少 table“modelB”
的 FROM 子句条目
从 Strapi v3.4.2 开始可以使用深度排序看看
Strapi release v3.4.2
确实,自 Strapi release v3.4.2 以来,您似乎可以对查询进行深度排序。耶!
您可以在 strapi 项目的测试 here 中找到示例。
这是语法(正如我最初的问题所预期的那样):
{
// ...
_sort: 'modelB.field_model_b:ASC'
}
假设我 modelA
在 modelB
上有一个外键。
在api/modelA/services/modelA.js
中,我可以定义:
// [...]
module.exports = {
/**
* Promise to fetch all records
*
* @return {Promise}
*/
find (params, populate) {
params = {
...params,
_sort: 'field_from_model_a:DESC,other_field_model_a:ASC'
}
populate = [
'modelB'
]
return strapi.query('post').find(params, populate)
},
// [...]
这让我可以对我的查询进行排序,我还可以在使用
时过滤深度关系curl -X GET "http://localhost:1337/modelA?modelB.field_from_model_b=example_value
但我找不到如何在 modelB.some_field
上排序。
如果我写 _sort: 'modelB.field_model_b:ASC'
,我会收到一条错误消息:缺少 table“modelB”
从 Strapi v3.4.2 开始可以使用深度排序看看 Strapi release v3.4.2
确实,自 Strapi release v3.4.2 以来,您似乎可以对查询进行深度排序。耶!
您可以在 strapi 项目的测试 here 中找到示例。
这是语法(正如我最初的问题所预期的那样):
{
// ...
_sort: 'modelB.field_model_b:ASC'
}