Ничто не вернулось в перьях js до объединения с крючками - PullRequest
0 голосов
/ 03 мая 2020

Я создал хук до того в моей службе пользователей, которая должна включать запись из модели организации. Отношения между пользователями и организациями:

users.belongsToMany(models.organizations,{through: 'users_to_organizations'});

Хук до этого называется присоединением-организацией. js и выглядит как

module.exports = (options = {}) => {
  return async context => {
    const organizations = context.app.services.organizations.Model;
    context.params.sequelize = {
      include: [{model: organizations}]
    };
    return context;
  };
};

Он установлен в users.hooks. js как это

....
const attachOrganization = require('../../hooks/attach-organization');
module.exports = {
  before: {
    all: [],
    find: [ authenticate('jwt') ],
    get: [authenticate('jwt'), attachOrganization()],
....

Когда я ПОЛУЧУ /users?id=1, я не получаю обратно ни слова об организации, с которой он связан в users_to_organizations, что, как оказалось, является org 3 "test org".

Я ожидал увидеть в ответе дополнительные поля, относящиеся к организации.

Вместо этого я вижу только

{
    "total": 1,
    "limit": 10,
    "skip": 0,
    "data": [
        {
            "id": 1,
            "email": "hello@feathersjs.com",
            "googleId": null,
            "githubId": null,
            "createdAt": "2020-04-29T04:26:49.541Z",
            "updatedAt": "2020-04-29T04:26:49.541Z"
        }
    ]
}

Проходя через отладчик (pycharm), я вижу, что код в ловушке выполняется.

Я полагаю, что или продолжение не видит отношения, или перья не добавляют включение в запрос.

Чего мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 12 мая 2020

В перьях js, метод Get имеет 2 типа

  1. Get: для получения определенных c данных. Пример: GET /user/:id (id - идентификатор пользователя)
  2. Find: чтобы получить все данные с фильтрами, например: GET /user?name=xyz (будут возвращены все документы с именем xyz)

Вы добавили attachOrganization() в метод get и вызвали /users?id=1, который является методом FIND. Так что либо вызовите его с помощью /users/1 id 1, это ваш _id, либо добавьте attachOrganization() к хукам find метод тоже

...