Javascript 回调不是节点JS中更新的函数
这里是Javascript中的begginer和节点Js。 在尝试执行第一个简单的更新函数时,我遇到了错误: TypeError:回调不是函数 我在网上搜索答案,但这个问题仍然是个谜Javascript 回调不是节点JS中更新的函数,javascript,node.js,sql-server,Javascript,Node.js,Sql Server,这里是Javascript中的begginer和节点Js。 在尝试执行第一个简单的更新函数时,我遇到了错误: TypeError:回调不是函数 我在网上搜索答案,但这个问题仍然是个谜 function UpdateProductsCodes(columns, returnColumns, type, callback) { for (var i = 0; i < columns.ids.length; i++) { updateSql = "UPDATE TPr
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);
}
});
}
}
问题在于,调用函数时,您只是发送了错误数量的参数 该函数接受四个输入:
列、returnColumns、type、callback
。但在您的示例中,您将发送五个输入:req.body.entities、conditions、returnColumns、type、function(err、products)
最后一个(在本例中为函数)因此被忽略。函数作为回调
值接收的值实际上是调用函数时命名的类型
,因为这是您提供的第四个参数。此值不是一个可执行函数-这是错误消息告诉您的
现在我不知道哪些值是您实际需要/想要发送给函数的值,但很明显其中一个是多余的,您需要从调用代码中删除它。纯粹根据名称,我猜不需要req.body.entities
或条件
中的任何一个,但我当然看不到这些变量包含什么,也不能确定您的意图,因此您必须自己解决它
<> P.S.我还注意到,您的函数实际上从未使用过“<代码>返回栏或<代码>类型< /COD>参数,因此您可能需要考虑是否真的需要接受这些参数。也许可以删除它们。您能说明如何调用“UpdateProductsCodes”吗?您将传递什么作为回调参数?如果我使用:If(callback){callback(err,null);}我将再次获得erorr:TypeError:callback不是一个function@CristiPriciu演示如何调用UpdateProductCodes函数。错误消息告诉您,无论为
回调
选项提供了什么值,该值都不是可执行函数。它可能是字符串、数字或对象,但它肯定不是函数。它需要是一个函数。看看你是如何创造和提供价值的。如果您需要帮助,请向我们展示与此相关的代码。谢谢,我在最初的帖子中添加了。
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();
});