我有一个数据库模型,其中履行要求由采购订单组成。履行请求与一个表是complementmentrequestsLineItems具有一对多关系,采购订单同样与purchaseOrderLineItems具有一对多关系。问题和复杂性在于每个purchaseOrderLineItem记录还引用了complementrequestlineitem。因此,PurchaseOrderLineItem记录具有两个外键:PurchaseOrderID和FulfillmentRequestLineItemID。
我现在使用的方式是,我正在使用关联来很好地获取purchaseOrderId,但是我找不到一种方法来关联fulfillmentRequestLineItemId。我可能会采用完全错误的方法,但会建议一些建议。
我正在尝试在同一笔交易中完成所有这些操作。
阅读文档,尝试将ID简单映射到purchaseOrderLineItem的实例中,但尚未生成fulfillmentRequestLineItem的ID。
const findFulFillmentRequestLineItem = (lineItemsArray: FulfillmentRequestLineItem[], productId: string, product: string) => {
lineItemsArray.find( lineItem => {return (lineItem.productId === productId || lineItem.product === product)})
}
router.post('/', async (request: Request, response: Response) => {
try {
return connection.transaction(async (t) => {
const fulfillmentRequest = new FulfillmentRequest(request.body, {include: [
FulfillmentRequestLineItem,
{model: PurchaseOrder,
include: [PurchaseOrderLineItem]
}
]
});
fulfillmentRequest.purchaseOrder.forEach( purchaseOrder => {
purchaseOrder.set('status', 'New Order');
purchaseOrder.purchaseOrderLineItem.forEach( lineItem => {
let correspondingFulfillmentRequestLineItem = findFulFillmentRequestLineItem(fulfillmentRequest.FulfillmentRequestLineItem, lineItem.id, lineItem.product)
lineItem.set('fulfillmentRequestLineItemId', correspondingFulfillmentRequestLineItem.id)
})
})
});
}
catch(error){
console.log(error);
response.status(500).json({error: error.toString()})
}
});