Как объединить 2 таблицы и поля вывода из соседней таблицы? - PullRequest
0 голосов
/ 03 ноября 2019

всем, подскажите, пожалуйста

Я использую библиотеку objection.js (ORM) для knex.js

присоединился к таблицам пользователей и ролей, все отлично.

Я использую это:

const users = await User.query().eager().roles')

Я получаю это:

{"id":1, "email": "ann@mail.com", "password": "qwe", "role":1, "roles":{"id":1, "name": "admin"}}

Но как я могу получить плоскую структуру? :

{"id":1, "email": "ann@mail.com", "password": "qwe", "role "admin"}

1 Ответ

0 голосов
/ 04 ноября 2019

Я обычно ожидал бы, что Возражение сделает это с отношением HasOneRelation, поэтому я собираюсь предположить, что это то, что у вас есть здесь:

{
  "id": 1,
  "email": "ann@mail.com",
  "password": "qwe",
  "role": 1,
  "roles": {
    "id":1,
    "name": "admin"
  }
}

Если ваши пользователи могут иметь только одну роль ввремя, это должно быть хорошо. Чтобы получить плоскую структуру, вы можете либо обработать ее в JavaScript:

return {
  ...user,
  role: roles.name
}

или создать виртуальный атрибут :

export default class User extends Model {
  static get virtualAttributes() {
    return ['roleName'];
  }

  roleName() {
    return this.roles.name;
  }
  // ...
}

Это не остановитroles объект добавлен, но он предоставит псевдоним первого уровня для имени в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...