mirror of
https://github.com/strapi/strapi.git
synced 2025-12-27 15:13:21 +00:00
use transformLoadParamsToQuery instead of transformParamsToQuery to fix ordering being ignored in loadPages()
This commit is contained in:
parent
34ecc496e1
commit
98e8bc61e0
@ -192,12 +192,19 @@ module.exports = {
|
||||
};
|
||||
|
||||
if (isAnyToMany(attribute)) {
|
||||
const res = await strapi.entityService.loadPages(sourceModelUid, { id }, targetField, {
|
||||
...queryParams,
|
||||
page: query.page,
|
||||
pageSize: query.pageSize,
|
||||
ordering: 'desc',
|
||||
});
|
||||
const res = await strapi.entityService.loadPages(
|
||||
sourceModelUid,
|
||||
{ id },
|
||||
targetField,
|
||||
{
|
||||
...queryParams,
|
||||
ordering: 'desc',
|
||||
},
|
||||
{
|
||||
page: query.page,
|
||||
pageSize: query.pageSize,
|
||||
}
|
||||
);
|
||||
|
||||
ctx.body = res;
|
||||
} else {
|
||||
|
||||
@ -24,6 +24,13 @@ const {
|
||||
const { pickSelectionParams } = require('./params');
|
||||
const { applyTransforms } = require('./attributes');
|
||||
|
||||
const transformLoadParamsToQuery = (uid, field, params = {}, pagination = {}) => {
|
||||
return {
|
||||
...transformParamsToQuery(uid, { populate: { [field]: params } }).populate[field],
|
||||
...pagination,
|
||||
};
|
||||
};
|
||||
|
||||
// TODO: those should be strapi events used by the webhooks not the other way arround
|
||||
const { ENTRY_CREATE, ENTRY_UPDATE, ENTRY_DELETE } = webhookUtils.webhookEvents;
|
||||
|
||||
@ -246,38 +253,14 @@ const createDefaultImplementation = ({ strapi, db, eventHub, entityValidator })
|
||||
},
|
||||
|
||||
load(uid, entity, field, params = {}) {
|
||||
const { attributes } = strapi.getModel(uid);
|
||||
|
||||
const attribute = attributes[field];
|
||||
|
||||
const loadParams = {};
|
||||
|
||||
switch (attribute.type) {
|
||||
case 'relation': {
|
||||
Object.assign(loadParams, transformParamsToQuery(attribute.target, params));
|
||||
break;
|
||||
}
|
||||
case 'component': {
|
||||
Object.assign(loadParams, transformParamsToQuery(attribute.component, params));
|
||||
break;
|
||||
}
|
||||
case 'dynamiczone': {
|
||||
Object.assign(loadParams, transformParamsToQuery(null, params));
|
||||
break;
|
||||
}
|
||||
case 'media': {
|
||||
Object.assign(loadParams, transformParamsToQuery('plugin::upload.file', params));
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
if (!_.isString(field)) {
|
||||
throw new Error(`Invalid load. Expected "${field}" to be a string`);
|
||||
}
|
||||
|
||||
return db.query(uid).load(entity, field, loadParams);
|
||||
return db.query(uid).load(entity, field, transformLoadParamsToQuery(uid, field, params));
|
||||
},
|
||||
|
||||
loadPages(uid, entity, field, params = {}) {
|
||||
loadPages(uid, entity, field, params = {}, pagination = {}) {
|
||||
if (!_.isString(field)) {
|
||||
throw new Error(`Invalid load. Expected "${field}" to be a string`);
|
||||
}
|
||||
@ -289,7 +272,9 @@ const createDefaultImplementation = ({ strapi, db, eventHub, entityValidator })
|
||||
throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
|
||||
}
|
||||
|
||||
return db.query(uid).loadPages(entity, field, transformParamsToQuery(attribute.target, params));
|
||||
const query = transformLoadParamsToQuery(uid, field, params, pagination);
|
||||
|
||||
return db.query(uid).loadPages(entity, field, query);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -49,6 +49,10 @@ const convertCountQueryParams = (countQuery) => {
|
||||
return parseType({ type: 'boolean', value: countQuery });
|
||||
};
|
||||
|
||||
const convertOrderingQueryParams = (ordering) => {
|
||||
return ordering;
|
||||
};
|
||||
|
||||
/**
|
||||
* Sort query parser
|
||||
* @param {string} sortQuery - ex: id:asc,price:desc
|
||||
@ -248,7 +252,7 @@ const convertNestedPopulate = (subPopulate, schema) => {
|
||||
}
|
||||
|
||||
// TODO: We will need to consider a way to add limitation / pagination
|
||||
const { sort, filters, fields, populate, count } = subPopulate;
|
||||
const { sort, filters, fields, populate, count, ordering } = subPopulate;
|
||||
|
||||
const query = {};
|
||||
|
||||
@ -272,6 +276,10 @@ const convertNestedPopulate = (subPopulate, schema) => {
|
||||
query.count = convertCountQueryParams(count);
|
||||
}
|
||||
|
||||
if (ordering) {
|
||||
query.ordering = convertOrderingQueryParams(ordering);
|
||||
}
|
||||
|
||||
return query;
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user