将JSON数据存储在MySQL表中 [英] Store JSON data in MySQL table
本文介绍了将JSON数据存储在MySQL表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用NodeJS将JSON数据存储在MySQL表中时遇到问题.
I have a problem with storing JSON data in MySQL table using NodeJS.
JSON数据如下:
{
"header":
{
"file1":0,
"file2":1,
"subfiles":{
"subfile1":"true",
"subfile2":"true",
}
},
"response":
{
"number":678,
"start":0,
"docs":[
{
"id":"d3f3d",
"code":"l876s",
"country_name":"United States",
"city":"LA"
},
{
"id":"d2f2d",
"code":"2343g",
"country_name":"UK",
"city":"London"
}
]
}
}
,我只想将字段存储在docs数组(或响应对象)中. 我正在尝试以这种方式获取数据并将其存储在mysql中:
and I want to store only fields in docs array (or response object). I'm trying to get data and store in mysql in this way:
var express = require('express');
var mysql = require('mysql');
var request = require("request");
var app = express();
app.use('/', express.static('../client/app'));
app.use('/bower_components', express.static('../client/bower_components/'));
var server = require('http').createServer(app);
var bodyParser = require('body-parser');
app.jsonParser = bodyParser.json();
app.urlencodedParser = bodyParser.urlencoded({ extended: true });
//mysql connection setup
var connection = mysql.createConnection({
host : "localhost",
port: "3306",
user : "root",
password : "root",
database : "db",
multipleStatements: true
});
request('http://url.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
//console.log(body) //
}
var data = body.toString();
console.log(string);
var query = connection.query('INSERT INTO table SET ?', data, function(err, result) {
// Finish
});
console.log(query.sql);
});
server.listen(3000, function () {
'use strict';
});
在日志中,我得到了
INSERT INTO table SET '{\n \"header\":{\n \"file1\":0,\n \"file2\":1,\n \"subfiles\":{\n \"subfile1\":\"true\",\n \"subfile2\":\"true\"}},\n \"response\":{\"number\":678,\"start\":0,\"docs\":[\n {\n \"id\":\"d3f3d\",\n \"code\":\"l876s\",\n....
输出消息,但是MySQL表中没有数据. 我需要指定查询中的每一列吗?
output message, but I don't have data in MySQL table. Do I need to specify every column in query?
推荐答案
在您的//Finish
注释中,您应该添加一些console.log(err)
以查看为什么没有插入数据.
at your //Finish
comment you should have added some console.log(err)
to see why there was no data inserted.
解决方法:
var data = JSON.parse(body);
var responseJson = JSON.stringify(data.response);
var query = connection.query('INSERT INTO table SET column=?', responseJson, function(err, result) {
if(err) throw err;
console.log('data inserted');
});
这篇关于将JSON数据存储在MySQL表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文