NodeJS Json数据未完全插入数据库

时间:2017-12-02 19:15:41

标签: javascript json node.js

2天试图找到问题的解决方案。 我从网站请求数据(json)。 它们返回正常,json有效,但是当我尝试将它们插入数据库时​​,几乎10%都没有插入。 我不知道该怎么做,我甚至尝试过同样的结果。 感谢任何帮助世界。谢谢。

选择数据属性var result = obj.data后,这是json ouptut; pastebin



var request = require("request");
var fs = require('fs');
var sleep = require('system-sleep');

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'feeds',
    timezone: 'Z'
});

request.post({
    url: "xxx",
    headers: {
        "Content-Type": "application/json"
    },
    body: '{"xx": "true", "xxx": "true"}'
}, function(error, response, body) {

    var obj = JSON.parse(body);
    var result = obj.data;
    console.log(result);
    for (var i = 0; i < result.length; i++) {
        var object = result[i];
        for (property in object) {
            var value = object[property];
            var pid, pname;
            if (property == "id") {
                pid = value;
            }
            if (property == "name") {
                pname = value;
            }
            if (property == "xxxxx") {}
            if (property == "xxxxxxxx") {
                connection.query('INSERT INTO tournaments(id, name) VALUES (' + pid + ', "' + pname + '")');
            }

        }
    }

});
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

欢迎来到SO。

您可能错过了一个错误。您请求插入,但然后放手。 connection.query允许函数作为其第二个参数,这是一个回调。查看以下行

connection.query( 'SELECT * FROM some_table', ( err, rows ) => {
  // do something with the results here
} );

对你而言,它看起来像是:

connection.query('INSERT INTO tournaments(id, name) VALUES (' + pid + ', "' + pname + '")', function(err, rows){
   console.log('Successful write', rows);
   console.error('Error! This did not write because: ', err);
})

每次调用它时,都应该将console.log设置为err和rows。您现在可以看到为什么有些结果没有写入数据库,并且它们会显示为错误。