我有一種在 Mongo 中執行更新的方法,但我無權訪問“res”和“res”,因為它是一種我將在多個場合使用的方法。
我的問題是當我嘗試回傳時回應更新但由于請求永遠不會完成它不起作用。你知道我該怎么回答嗎?
此方法呼叫將被多次重用的方法:
let item = (req, res = response ) => {
const { id } = req.params;
const { status, user, ...data } = req.body;
data.user = req.uid;
data.expenditure = null;
let item = {
concept: data.concept,
revenue: data.revenue,
'createdBy': {
uid: req.uid,
username: req.user.username,
},
description: data.description
}
createNewItem( id, item );
}
這是多次重用沒有“req”或“res”的方法:
const createNewItem = async ( id, item ) => {
try {
let pettycash = await PettyCash.findByIdAndUpdate( id,
{
$push: {
'items': {
$each: [item],
}
}
},{ new: true }
);
return { err: null, status: 200, pettycash };
} catch (err) {
return { err: err.toString(), status: 500, data: null };
}
}
雖然程序是正確的 return { err: null, status: 200, pettycash };并沒有完成請求,所以 POSTMAN 永遠不會完成,你一直在等待一些回應。
謝謝。
uj5u.com熱心網友回復:
好的,有兩個選擇。
一次傳遞res給函式作為您不想要的引數,這不是一個好主意,因為它違反了函式的單一責任規則。
您添加await以便控制器等待函式執行完成。為此,請制作您的控制器async。這通常是一個好主意。您讓控制器完成其作業,同時您createNewItem只有創建專案的單一責任。
let item = async (req, res = response ) => {
const { id } = req.params;
const { status, user, ...data } = req.body;
data.user = req.uid;
data.expenditure = null;
let item = {
concept: data.concept,
revenue: data.revenue,
'createdBy': {
uid: req.uid,
username: req.user.username,
},
description: data.description
}
await createNewItem( id, item );
// send response back
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/422157.html
標籤:
