Выполните начальную загрузку в узле в отношении hasAndBelongsToMany - PullRequest
0 голосов
/ 15 октября 2018

Как я могу сделать начальную загрузку данных в отношении hasAndBelongsToMany?

Пример:

Model Product
{
idProduct,
Description
(..)
}

Model Order
{
idOrder,
Date
(...)
}

В чванстве есть:

PUT: /order/{id}/product/rel/{fk}
{
  "id": "string",
  "orderId": "string",
  "productId": "string"
}

Но я не знаю, как я могу сделать этот сценарий загрузки моего узла (как я могу вызвать метод, чтобы сделать это) ...

Я знаю, как вставлять ордера, вставлятьпродукты, но я не знаю, как "связать" один или несколько продуктов в одном или нескольких заказах.

В других ссылках я вижу "Order.Product.link({id1: val1, id2: val2})", но в узле не работает ...

1 Ответ

0 голосов
/ 16 октября 2018

Чтобы создать новую ссылку, необходимо сначала получить экземпляр исходной модели (Заказ), а затем вызвать метод отношения add, чтобы установить отношение с целевой моделью (Продукт).

const order = await Order.findById(orderId);
await order.products.add(productId);

Если вы добавляете товары при создании нового заказа:

const order = await Order.create({/* order data */});
await order.products.add(productId);

Вот версия с обратным вызовом, если вы еще не используете асинхронные функции или Обещания:

Order.findById(orderId, function(err, order) {
  if (err) // handle the error

  order.products.add(productId, function(err) {

    if (err) // handle the error
    // done
  });
});
...