使用mysql node.js驱动程序将整个数据库作为JSON
Using mysql node.js driver to get an entire database as JSON
我正在创建一个JavaScript文件来获取整个MySQL数据库的JSON转储,运行在服务器端。我发现并使用MySQL驱动程序的node.js (https://www.npmjs.com/package/mysql)查询,它已经足够直接开始。我的问题是,我需要调用多个查询,并从所有这些查询中获取结果,放入一个JSON文件中,我不能完全做到这一点。我对JavaScript完全陌生(基本上从来没有接触过它),所以它可能是一个相对简单的解决方案,我只是错过了。
目前我做一个查询'SHOW TABLES'来获得所有表的列表(这可以改变,所以我不能只是假设一个常量列表)。然后,我只是想循环遍历列表,并对每个表调用'SELECT * from table_name',将结果合并为一个大JSON。不幸的是,我还没有弄清楚如何让代码完成所有的查询之前,试图结合它们,从而返回"未定义"的所有结果。以下是我目前拥有的:
var mysql = require('mysql');
var fs = require('fs');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'pass',
database: 'test_data'
});
connection.connect();
connection.query('SHOW TABLES;', function(err, results, fields)
{
if(err) throw err;
var name = fields[0].name;
var database_json = get_table(results[0][name]);
for (i = 1; i < results.length; i++)
{
var table_name = results[i][name];
var table_json = get_table(table_name);
database_json = database_table_json.concat(table_json);
}
fs.writeFile('test_data.json', JSON.stringify(database_json), function (err)
{
if (err) throw err;
});
connection.end();
});
function get_table(table_name)
{
connection.query('select * from ' + table_name + ';', function(err, results, fields) {
if(err) throw err;
return results;
});
}
这得到表列表,并通过所有它没有问题,由第二个查询返回的信息是正确的,如果我只是做控制台日志(结果)内的查询,但for循环只是继续在任何查询完成之前,因此'table_json'只是结束为'未定义'。我真的认为这一定是一个简单的解决方案(可能是一些回调,我还没有完全理解),但我一直磕磕绊绊。
谢谢你的帮助
我猜这是用于某种维护类型的函数,而不是您的应用程序所需要的部分。异步执行此操作可能是安全的。这个模块可以在这里找到:https://github.com/caolan/async
你也可以使用Q承诺,在这里:https://github.com/kriskowal/q
这个答案:很好地描述了两种方法:等待一些异步任务完成的最简单方法,在Javascript中?
- Selectize.js:如何将数据库中已经选择的标签预加载到输入字段(Meteor&MongoDB/JSON)
- 我有一个mysql的输入文本字段.那么,如何通过ajax从数据库中输出json表呢
- 如何在JavaScript中存储和检索MySQL数据库中的JSON数据
- 数据库、servlet、json、javascript和highchart饼图
- 使用node.js将非常大的json文件索引/摄取到数据库中
- 如何从数据库中获取JSON字符串结果以供以后使用
- jQuery在没有数据库的情况下从php-json自动完成
- 在Ember中显示使用数据库中的JSON的数组
- 使用php将Json数据存储到mysql数据库中
- NodeJS:将数据库中检索到的数据以JSON形式转换为纯文本
- Javascript中应用的jQuery JSON数据库变量
- 通过Javascript/AJAX/JSON/PHP将数据从JQuery传递到数据库
- 使用 Json 如何根据数据库中的值选择单选按钮
- 融合图 - 使用 JSON 和数据库的毫秒线图
- 使用 JSON 从数据库检索纬度经度到 PHP 页面
- 从索引数据库中的 ajax 调用缓存 JSON,检查更改
- 如何从 json 对象获取特定的键和值以存储在数据库中
- 只是将 XML/JSON 存储在数据库中,用于数据库中未使用的数据
- 无法将数据保存在数据库中,asp.net 中的 Json
- 使用 JSON 文件在 javascript 中持久存储小型数据库