this._callback.apply不是一个函数! 节点js Mysql错误

控制器代码

app.post('/savedata', function(req, res) { var cope = req.body; console.log("On server side"); console.log(cope.Client_ID); var queries = connection.query('update lv_billing.client SET Client_ID = ?, Client_Name = ?,Status = ?,Updt_Time = ?,Updt_By = ?,Updt_ID = ?,Cluster = ? where Client_ID = ?',cope.Client_ID,cope.Client_Name,cope.Status,cope.Updt_Time,cope.Updt_By,cope.Updt_ID,cope.Cluster,cope.Client_ID, function(err,res){ if(err) throw err; console.log('Inserted!'); }) }); 

上面的代码抛出错误“this._callback.apply”甚至不是一个函数。 设置一个小背景。 即时尝试更新我的表与数组中的新值。 “应付”是一个数组,其中包含需要更新的值。

作为@RugDealer提到,你应该提供callback函数作为第二个或第三个参数。 如果你正在使用mysql模块,你可以像这样改变你的function:

  app.post('/savedata', function(req, res) { var cope = req.body; console.log("On server side"); console.log(cope.Client_ID); var params = [cope.Client_ID, cope.Client_Name, cope.Status, cope.Updt_Time, cope.Updt_By, cope.Updt_ID, cope.Cluster, cope.Client_ID]; var queries = connection.query('update lv_billing.client SET Client_ID = ?,Client_Name = ?,Status = ?,Updt_Time = ?,Updt_By = ?,Updt_ID = ?,Cluster = ? where Client_ID = ?',params, function(err,res){ if(err) throw err; console.log('Inserted!'); }); }); 

有关更多信息,请查看源代码: https : //www.npmjs.com/package/mysql

 var q = con.query('UPDATE table_Name SET wordstype_count = wordstype_count + ? Where user_id = ?', [data.keyCount , data.userId],function (err, result) { if (err) throw err; } ); 

像这样使用你的参数。 这对我来说工作得很好。

你callback应该是你的第二个参数。

 connection.query('query string here', callback_function_here); 

只是像这样连接你的variables,否则它们被认为是参数:

 'update lv_billing.client SET Client_ID = ' + cope.Client_ID + ' ... ' 

我不确定你使用的是哪个mysql驱动,因为你没有这么说,或者在你写的代码中提供任何线索。 据说,我认为代码应该看起来更像这样:

 app.post('/savedata', function(req, res) { var cope = req.body; console.log("On server side"); console.log(cope.Client_ID); var queries = connection.query('update lv_billing.client SET Client_ID = ' + cope.Client_ID + ', Client_Name = ' + cope.Client_Name + ' ,Status = ' + cope.Status + ' ,Updt_Time = ' + cope.Updt_Time + ',Updt_By = ' + cope.Updt_By + ',Updt_ID = ' + cope.Updt_ID + ',Cluster = ' + cope.Cluster + ' where Client_ID = ' + cope.Client_ID, function(err,res){ if(err) throw err; console.log('Inserted!'); }) }); 

通常,当你得到一个错误说某个东西不是一个函数,这意味着你正在尝试使用某个函数而不是一个函数。 我的假设是你正在使用类似这样的库:

https://github.com/mysqljs/mysql#performing-queries

请注意,查询的格式如下所示:

 .query(sqlString, callback)