[英]Callback is not a function for update in Node JS
在這里用Javascript和Node Js開始。 嘗試執行我的第一個簡單更新功能時,出現錯誤:
TypeError:回調不是函數。
我在網上搜索了答案,但是這個問題仍然是個謎。
function UpdateProductsCodes(columns, returnColumns, type, callback) {
for (var i = 0; i < columns.ids.length; i++) {
updateSql = "UPDATE TProductCodes SET code =?, product_id =? OUTPUT inserted.id, inserted.code, inserted.product_id INTO #returnValues WHERE ids =?";
var params = [];
params.push(columns.codes[i]);
params.push(columns.product_ids[i]);
params.push(columns.ids[i]);
sql.query(conn_str, updateSql, params, function (err, products, more) {
//Code stops here
//TypeError: callback is not a function
if (err) {
callback(err, null);
return;
};
if (!more) {
callback(null, products);
}
});
}
}
此功能應該進行簡單的更新,僅此而已。 它在這里使用:
UpdateProductsCodes(req.body.entities, conditions, returnColumns, type, function (err, products) {
if (err) {
console.dir(err);
res.writeHead(500, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(utils.GenerateResponse(err.message, true, 'JSON')));
res.end();
return;
}
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(utils.GenerateResponse(products, false, type)));
res.end();
});
問題是調用函數時,您只是發送了錯誤數量的參數。
該函數接受四個輸入: columns, returnColumns, type, callback
。 但是在您的示例中,您將發送五個輸入: req.body.entities, conditions, returnColumns, type, function (err, products)
因此將忽略最后一個(在這種情況下為函數)。 實際上,該函數作為callback
值接收的值就是您在調用該函數時已命名的type
,因為這是您提供的第四個參數。 此值不是可執行函數-錯誤消息告訴您的內容。
現在,我不知道您實際需要/想要將哪些值發送給函數,但是顯然其中之一是多余的,您需要將其從調用代碼中刪除。 純粹基於名稱,我猜想req.body.entities
或conditions
之一,但是我當然看不到這些變量包含什么,也無法確定您的意圖,所以您必須自己解決。
PS我還注意到,您的函數從不實際使用它接收到的returnColumns
或type
參數,因此您可能應該考慮是否真的需要接受這些參數。 也許可以將其刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.