将JSON数据存储在MySQL表中 [英] Store JSON data in MySQL table

查看:141
本文介绍了将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆