首页 > 解决方案 > 在 hasAndBelongsToMany 关系中的节点中执行初始加载

问题描述

如何在 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})"但在节点中不起作用...

标签: node.jsmongodbloopbackjshas-and-belongs-to-many

解决方案


新建链接需要先获取源模型(Order)的实例,然后调用relation方法add与目标模型(Product)建立关系。

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

如果您在创建新订单时添加产品:

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

这是一个基于回调的版本,以防您尚未使用异步函数或 Promises:

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

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

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

推荐阅读