Осталось присоединиться к lowdb - PullRequest
3 голосов
/ 05 мая 2019

У меня есть две таблицы / массива, user и order, в моей базе данных JSON. Это выглядит так:

{
  "user": [
    {
      "id": "1",
      "name": "test"
    },
    {
      "id": "2",
      "name": "test"
    },
    {
      "id": "3",
      "name": "test"
    }
  ],
  "order": [
    {
      "user_id": "1",
      "date_order": "2018-01-01",
      "end_order": "2018-01-05"
    },
    {
      "user_id": "2",
      "date_order": "2018-02-01",
      "end_order": "2018-02-05"
    }
  ]
}

Я хочу получить всех пользователей, с которыми не связан заказ. Так что в этом случае только пользователь № 3. Есть ли конкретная функция для левого соединения? Я читаю README, но не могу понять, как «соединить» две «таблицы». Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

lowdb не имеет функциональности join в данный момент. user и order рассматриваются как databases, а не tables.

Вы можете создавать свои заказы внутри вашего user db, если вы хотите делать запросы с синтаксисом lowdb.

Если вы продолжаете использовать структуру данных вашего вопроса, вы можете сделать что-то вроде этого:

const userIds = db('order').map('user_id');
const users = db('user').filter(user => !userIds.includes(user.id));

Обратите внимание, что в этом случае вы сначала запросите все свои userIds. Это может привести к проблемам с производительностью, если это число велико.

0 голосов
/ 05 мая 2019

Вы можете использовать filter() в пользовательском массиве и использовать find() в order массиве, чтобы проверить, есть ли какой-либо объект с user_id, равным id obj в пользовательском массиве.

const obj = { "user": [ { "id": "1", "name": "test" }, { "id": "2", "name": "test" }, { "id": "3", "name": "test" } ], "order": [ { "user_id": "1", "date_order": "2018-01-01", "end_order": "2018-01-05" }, { "user_id": "2", "date_order": "2018-02-01", "end_order": "2018-02-05" } ] }

const res = obj.user.filter(x => !obj.order.find(a => a.user_id === x.id));
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...