如何过滤查找FeatherJs中返回的数据

时间:2019-04-10 20:59:15

标签: node.js feathersjs feathers-hook

我有返回此结果的代码:

// 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;
    };
  };

返回此结果:

 "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"
          }
        ]
      }
    },

如何仅保留数据..

"userId": "Z5DO1Gx2YpXLTRBb",
  "interactUser": "fNEgNVk6yh3msVa8",
  "_id": "T3ekz58yNDacS5o2",
  "display": 
       {
        "text": "nome1",
        "from": "8Tp5maaTePqiD3DI",
        "to": "ijHTUNeSbSQNICOC",
        "createdAt": 1554757301176,
        "_id": "o2vkUj7suYzhEZk7"
  }

“ userId”:“ Z5DO1Gx2YpXLTRBb”,   “ interactUser”:“ fNEgNVk6yh3msVa8”,   “ _id”:“ T3ekz58yNDacS5o2”,   “显示”:        {         “ text”:“ nome1”,         “ from”:“ 8Tp5maaTePqiD3DI”,         “至”:“ ijHTUNeSbSQNICOC”,         “ createdAt”:1554757301176,         “ _id”:“ o2vkUj7suYzhEZk7”   }

如果有任何方法,或者更确切地说是格式化查询返回的结果

1 个答案:

答案 0 :(得分:1)

之所以获得这些结果,是因为pagination。禁用分页只会返回数据。

您可以创建自己的钩子来处理将在需要时禁用分页的查询。

好消息是,有一个可以解决您问题的软件包feahters-hooks-common

所需的确切钩子已记录在(disablepagination)中。