1 回答

TA貢獻1860條經(jīng)驗 獲得超9個贊
方法func需要一個值數(shù)組作為第二個參數(shù)。在您的情況下,它必須是一個參數(shù) - 對象數(shù)組。但是您改為給它 2 個參數(shù),每個參數(shù)都是一個對象,因此會出現(xiàn)錯誤。
正確的方法是:
const orderInput = [{item:"Red Widget", quantity:10}, {item:"Blue Widget", quantity:5}];
await db.func('insert_into_orders', [orderInput]);
無論如何,您應(yīng)該使用事件查詢或pg-monitor來查看生成了什么 SQL。
另外,您insert_into_orders應(yīng)該是一個存儲過程,然后至少通過proc執(zhí)行。但是,它的實現(xiàn)看起來應(yīng)該只是代碼中的一個事務(wù)。
執(zhí)行此操作后,錯誤返回為"error": {"message": "function insert_into_orders(text[]) does not exist"}
那是因為類型不匹配,這需要類型轉(zhuǎn)換......
您可以通過常規(guī)查詢方法調(diào)用該函數(shù),也可以使用自定義類型格式來修改數(shù)據(jù)格式:
const data = {
toPostgres: () => `${pgp.as.array(orderInput)}::json[]::order_input[]`,
rawType: true
};
然后將其傳入:
await db.func('insert_into_orders', [data]);
添加回答
舉報