如何使用节点js将json插入mysql?

时间:2018-04-08 10:33:09

标签: json node.js mongodb

var express = require('express');
var app=express();
var length;
var affiliate = require('flipkart-affiliate');
var url = require('url');
var moment=require('moment');
var mysql = require('mysql');
var body;
var getUrl;
var product;
var offer;
var offer1;
var offer2;
var offer3;
var test1;
var test2;
var test3;
var title=[];
var description=[];
var startTime=[];
var endTime=[];
var json={};
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'coupontest'
});
var client = affiliate.createClient({
    FkAffId: 'anandhkum',
    FkAffToken: 'eb030998c556443087d3b1a27ac569d0',
    responseType: 'json'
});
client.getCategoryFeed({
    trackingId: 'anandhkum'
}, function(err, result,getUrl){
    if(!err){
        body=JSON.parse(result);
        getUrl=body.apiGroups.affiliate.apiListings.food_nutrition.availableVariants["v1.1.0"].get;
        client.getProductsFeed({
            url: getUrl
        }, function(err, result){
            if(!err){

            }else {
                console.log(err);
            }
        });
    }
});
connection.connect(function(err) {
    if (err) {
        return console.error('error: ' + err.message);
    }
    console.log('Connected to the MySQL server.');
});
app.get('/',function (req,res) {
    client.getAllOffers(null,function(err, resp) {
        if (!err) {
            offer = JSON.parse(resp);
            test1 = offer.allOffersList.length;
            res.send(offer);
            for(var i=0;i<test1;i++){
                description[i]=offer.allOffersList[i].description;
                startTime[i]=offer.allOffersList[i].startTime;
                endTime[i]=offer.allOffersList[i].endTime;
            }
            var stmt = "INSERT INTO offers(description,start_time,end_time) VALUES (?, ?, ?)";
            connection.query(stmt, [description,startTime,endTime], function (err, result) {
                if (err) throw err.message;
                console.log("Number of records inserted: " + result.affectedRows);
            });
        }
        else {
            console.log(err);
        }
    });
});
app.listen(3000);
console.log("Listening to port 3000");

代码是关于从flipkart.com获取商品详细信息作为json数据并将其存储到mysql表中。

但我收到了错误

抛出错误; //重新抛出非MySQL错误

ER_WRONG_VALUE_COUNT_ON_ROW:列数与第1行的值计数不匹配

我尝试使用许多sql语法,但它显示上述错误

有人可以帮我解决上述错误吗?

1 个答案:

答案 0 :(得分:0)

尝试这样做,因为我可以看到你想要一次插入多个结果所以需要传递一个数组我在后面的查询中也做了错误&# 34; ER_WRONG_VALUE_COUNT_ON_ROW&#34; 是由于您在查询中传递的错误,因为您需要插入多个行,因此您需要确保正确<强>?数。

     var queryString = "";
            var insertString = "(?,?,?),";
         var values = [];
         for(var i=0;i<test1;i++){
                            description[i]=offer.allOffersList[i].description;
                            startTime[i]=offer.allOffersList[i].startTime;
                            endTime[i]=offer.allOffersList[i].endTime;
values.push(description[i],startTime[i],endTime[i]);
        queryString = queryString + insertString;
                        }
        queryString = queryString.substring(0, queryString.length - 1); // is used to remove last ',' which will get inserted while we are creating queryString 
                        var stmt = "INSERT INTO offers(description,start_time,end_time) VALUES " + queryString ;
                        connection.query(stmt,values, function (err, result) {
                            if (err) throw err.message;
                            console.log("Number of records inserted: " + result.affectedRows);
                        });