I have this code that returns this result:
// Use this hook to manipulate incoming or outgoing data.
// For more information on hooks, see: http://docs.feathersjs.com/api/hooks.html
module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
return async context => {
// Get `app`, `method`, `params` and `result` from the hook context
const { app, method, result, params } = context;
// Make sure that we always have a list of users either by wrapping
// a single message into an array or by getting the `data` from the `find` method's result
const interacts = method === 'find' ? result.data : [ result ];
// console.log(users);
// Asynchronously get user object from each message's `userId`
// and add it to the message
await Promise.all(interacts.map(async interact => {
// await Promise.all(user.map(async interacts => {
// Also pass the original `params` to the service call
// so that it has the same information available (e.g. who is requesting it)
// bots.botId = await app.service('bots').get(bots.botId, params);
interact.display = await app.service('messages').find({
query: {
to: "ijHTUNeSbSQNICOC",
from: "8Tp5maaTePqiD3DI",
$limit: 1,
$sort: {
createdAt: -1
}
}
});
// }));
}));
console.log(context);
// Best practice: hooks should always return the context
return context;
};
};
return this result:
"total": 6,
"limit": 10,
"skip": 0,
"data": [
{
"userId": "8Tp5maaTePqiD3DI",
"interactUser": "ijHTUNeSbSQNICOC",
"_id": "3r3MY8SagJMqcEj4",
"display": {
"total": 2,
"limit": 1,
"skip": 0,
"data": [
{
"text": "nome1",
"from": "8Tp5maaTePqiD3DI",
"to": "ijHTUNeSbSQNICOC",
"createdAt": 1554757301176,
"_id": "o2vkUj7suYzhEZk7"
}
]
}
},
{
"userId": "fNEgNVk6yh3msVa8",
"interactUser": "Z5DO1Gx2YpXLTRBb",
"_id": "KAtOheLC6AEiJL41",
"display": {
"total": 2,
"limit": 1,
"skip": 0,
"data": [
{
"text": "nome1",
"from": "8Tp5maaTePqiD3DI",
"to": "ijHTUNeSbSQNICOC",
"createdAt": 1554757301176,
"_id": "o2vkUj7suYzhEZk7"
}
]
}
},
{
"userId": "Z5DO1Gx2YpXLTRBb",
"interactUser": "Z5DO1Gx2YpXLTRBb",
"_id": "LgoqQxxR8538fnu3",
"display": {
"total": 2,
"limit": 1,
"skip": 0,
"data": [
{
"text": "nome1",
"from": "8Tp5maaTePqiD3DI",
"to": "ijHTUNeSbSQNICOC",
"createdAt": 1554757301176,
"_id": "o2vkUj7suYzhEZk7"
}
]
}
},
{
"userId": "8Tp5maaTePqiD3DI",
"interactUser": "8Tp5maaTePqiD3DI",
"_id": "PuUaonKg3hol2wz0",
"display": {
"total": 2,
"limit": 1,
"skip": 0,
"data": [
{
"text": "nome1",
"from": "8Tp5maaTePqiD3DI",
"to": "ijHTUNeSbSQNICOC",
"createdAt": 1554757301176,
"_id": "o2vkUj7suYzhEZk7"
}
]
}
},
how to leave only data this..:
"userId": "Z5DO1Gx2YpXLTRBb",
"interactUser": "fNEgNVk6yh3msVa8",
"_id": "T3ekz58yNDacS5o2",
"display":
{
"text": "nome1",
"from": "8Tp5maaTePqiD3DI",
"to": "ijHTUNeSbSQNICOC",
"createdAt": 1554757301176,
"_id": "o2vkUj7suYzhEZk7"
}
"userId": "Z5DO1Gx2YpXLTRBb", "interactUser": "fNEgNVk6yh3msVa8", "_id": "T3ekz58yNDacS5o2", "display": { "text": "nome1", "from": "8Tp5maaTePqiD3DI", "to": "ijHTUNeSbSQNICOC", "createdAt": 1554757301176, "_id": "o2vkUj7suYzhEZk7" }
If there is any way, or rather to format the results returned by the query
The reason why you have those results is because of pagination
. Disabling the pagination will only return the data.
You can create your own hook to handle queries that will disable the pagination if requested.
The good news is, there is a package that will solve your problem, feahters-hooks-common.
The exact hook you want is documented in (disablepagination) .