javascript - Node.js mysql 查询和网络连接

标签 javascript mysql node.js

我有一个 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) {//...

关于javascript - Node.js mysql 查询和网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27569698/

相关文章:

PHP MySQL 从临时列中获取数据

mysql - 无法在Excel 2016 VBA中连接到mysql数据库

javascript - MongoDB原生 Node 驱动: Explain is Broken?

javascript - 将 ejs 与express一起使用会返回意外的标记<used

javascript - "ReferenceError: Can' t 查找变量 : google"on checking for undefined

javascript - 获取类设置为col-md-7但未设置宽度的div的宽度

javascript - AngularJs 元素没有出现在打印对话中?

javascript - "Not a constructor",但类型检查出来

php - 显示随机 mysql 记录 - PHP

javascript - Socket.io 和签名的 cookie