Node.js的mysql查询和networking连接

我有一个node.js脚本,它接收来自电话系统的SMDR数据,然后将其插入到数据库中。 我现在有的代码插入除了OperatorID(它插入[object Object]到该列中的所有内容)。 我无法弄清楚为什么会发生这种情况。 有任何想法吗?

var net = require('net'), mysql = require('mysql'), PORT = 1752, HOST = '192.168.10.2', pool = mysql.createPool({ host: 'localhost', port: 3306, user: 'root', password: 'root', database: 'mydb' }); function connectionListener(conn) { console.log('Listening for incoming calls...'); } function logCall(phonenumber, operator) { pool.getConnection(function(err, connection) { if (!err) { // If no error exists //var operID = ''; var opquery = connection.query('SELECT OperatorID FROM tblOperators WHERE Phone_Login = ' + operator, function(err, rows) { if (err) { console.error(err); } //operID = rows[0]; //console.log(operID); console.log(rows[0]); //logs on console okay var query = connection.query('INSERT INTO incoming_calls(phone_number, OperatorID) VALUES("' + phonenumber + '", "' + rows[0] + '") ON DUPLICATE KEY UPDATE OperatorID=OperatorID, date_created=NOW()', function(err, rows) {//fails to insert rows[0] if (err) { console.error(err); } connection.release(); }); }); } else { console.error(err); } }); } function processdata(data) { var phonedata = data.toString().match(/([0-9]?)([0-9]{10})/), operdata = data.toString().match(/([*])([0-9]{4})/); if (phonedata !== null && operdata !== null) { var phonenumber = phonedata[2], oper = operdata[2]; oper = oper.replace('*', ''); //phonenumber = phonenumber.slice(0,3)+"-"+phonenumber.slice(3,6)+"-"+phonenumber.slice(6); logCall(phonenumber, oper); } }; logCall('999-999-9999', '1203'); //where 1203 is valid var conn = net.createConnection(PORT, HOST, connectionListener); conn.on('data', processdata); conn.setEncoding('utf8'); 

你需要指定

 rows[0].OperatorID 

在您的INSERT查询中,因为您正试图插入整个行,这是一个对象。

 var query = connection.query('INSERT INTO incoming_calls(phone_number, OperatorID) VALUES("' + phonenumber + '", "' + rows[0].OperatorID + '") ON DUPLICATE KEY UPDATE OperatorID=OperatorID, date_created=NOW()', function(err, rows) {//...