node.js - 在 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})"
但在节点中不起作用...
解决方案
新建链接需要先获取源模型(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
});
});
推荐阅读
- npm - 相当于 npm explore 的 yarn 是什么?
- haskell - 在 Haskell 中从字符串转换为摩尔斯电码
- css - 使用引导程序在嵌套的弹性框内滚动
- c# - c# 在多个列表之间查找相同的项目,但跳过空列表
- python-3.x - 从 dict 获取 1-10 范围内的特定数据
- c# - 将一种类型理解为另一种类型
- laravel - 调用未定义的方法 Illuminate\\Support\\Facades\\Request::header()
- machine-learning - 当我在 TreeExplainer 中包含训练数据时,为什么会得到不同的 expected_value?
- azure-devops - Azure Artifacts - 与其他项目共享项目范围的源
- angular - 在 Angular 的内容安全策略中将域列入白名单