【问题标题】:How to write the JSON data to MySql Database on NodeJS?如何将 JSON 数据写入 NodeJS 上的 MySql 数据库?
【发布时间】:2015-12-13 18:48:27
【问题描述】:

我有 JSON 数据,这些数据来自我的 Firebird 数据库。现在,我想创建 mysql 连接并将 JSON 数据写入 NodeJS 上的 MySql 数据库。但是当我关闭 Firebird 连接并创建 MySql 连接并尝试对其进行一些查询时,它会给出一个错误:

events.js:85 投掷者; // 未处理的“错误”事件 ^ 错误:调用退出后无法排队握手。 在 Protocol._validateEnqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:196:16) 在 Protocol._enqueue (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:129:13) 在 Protocol.handshake (/Users/myuser/node_modules/mysql/lib/protocol/Protocol.js:52:41) 在 Connection.connect (/Users/myuser/node_modules/mysql/lib/Connection.js:123:18) 在服务器。 (/Users/myuser/Documents/project/convert_fdb_to_mysql.js:34:14) 在 Server.emit (events.js:110:17) 在 HTTPParser.parserOnIncoming [作为 onIncoming] (_http_server.js:491:12) 在 HTTPParser.parserOnHeadersComplete (_http_common.js:111:23) 在 Socket.socketOnData (_http_server.js:343:22) 在 Socket.emit (events.js:107:17)

我想修复这个错误并将我的 JSON 写入 MySql 数据库。 你能告诉我如何解决我的问题吗?

对于将 JSON 数据传输到 MySql 数据库有什么建议吗?

谢谢,

这是我从 Firebird db 获取数据的代码:

var fb = require('firebird');
var util = require('util');
var http = require('http');
// mySQL connection
var mysql = require('mysql');
var connection = mysql.createConnection({
    socketPath: '/tmp/mysql.sock',
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'mysql_db'
});
http.createServer(function (req, res) {
    res.writeHead(200, {
        'Content-Type': 'text/plain'
    });
    // Firebird connection
    var con = fb.createConnection();
    con.connectSync('FIREBIRD.FDB', 'SYSDBA', 'masterkey', '');
    var rs = con.querySync('SOME SQL Query');
    var rows = rs.fetchSync("all", true);
    con.disconnect(); // Firebird disconnect
    connection.connect(); // mysql connect
    connection.query('SOME SQL Query', function (err, rows, fields) {
        if (err) throw err;
        console.log(rows[0]);
    });
    connection.end(); // mysql disconnect
    res.write('[');
    rows.forEach(function (r) {
        res.write(JSON.stringify(r) + ',');
    });
    res.end(']');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

【问题讨论】:

  • 在 http 请求处理程序中很酷的同步操作。固体。
  • 这部分错误消息:Unhandled 'error' event 表明缺少错误处理程序。添加所述错误处理程序将为您提供可以采取行动的错误消息
  • 错误的第二部分表明你正在结束一些尚未完成的事情,比如那个 mysql 查询。

标签: mysql json database node.js firebird2.5


【解决方案1】:

这个方法有效! https://stackoverflow.com/a/14247110/5344483

对于 JSON 到 MySql:

Write queries with "JSON.stringify(r.FIELD_NAME)"

【讨论】:

    猜你喜欢
    • 2022-08-14
    • 2019-07-14
    • 2019-11-30
    • 2013-03-25
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多