1 回答

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