在mysql数据库节点js中动态插入多行?

时间:2017-06-24 09:51:10

标签: javascript mysql sql node.js

我试图使用节点js在mysql数据库中插入多行。这个想法是我有四个数组,每个数组有20个值。我的目标是使用节点js动态插入数据库中的所有值。现在,我有点困惑,我应该怎么做。 这是我的服务器文件 -

server.js - 
const express = require('express');
const app = express();

var db = require("./DatabaseConfig.js");

var cookieParser = require('cookie-parser');

var path = require('path');

var bodyParser = require('body-parser');
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
    extended: true
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.get('/', function (req, res) {
    res.send('Hello World!')
});

app.listen(4000, function () {
    console.log('Example app listening on port 4000!')
});

app.get("/home",function(req,res){
    res.render("Home.ejs");
});

app.post("/home",function(req,res)
{
var data = JSON.parse(req.body.info);
console.log(data.length);
var counter = [];
var publicationtitle=[];
    var publicationdate =[];
    var publicationlink=[];
for(var i=0;i<data.length;i++)
{
    counter.push(0);
    publicationtitle.push(data[i]["title"]);
    publicationdate.push(data[i]["pubDate"]);
     publicationlink.push(data[i]["link"]);
}
var res = db.dbconfig();


    var values = [
        publicationtitle, publicationlink,publicationdate,counter
    ];

    console.log("values",values);
   db.insertrecord(values);
    values=[];


});



DatabaseConfig.js

    var mysql      = require('mysql');
    var con = mysql.createConnection({
        host     : 'localhost',
        user     : '****',
        password : '****',
        database : 'test',
        multipleStatements: true
    });


    var values = [];






    module.exports = {
        dbconfig: function(error) {
            con.connect(function(err) {
                if (err) throw err;
                console.log("Connected!");
            });

        },

        insertrecord:function(values){
            var sql = "INSERT INTO rsscontent (title,link,date,count) VALUES ?";


            con.query(sql,[values], function(err) {
                if (err) throw err;
                con.end();
            });

        }


    };

任何建议或建议都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

您可以像这样构建查询和值:

    let placeholder = users.map(() => "(?, ?)").join(",");
    let query =
        `INSERT INTO ${TABLE_NAME.USER}
        (id, username)
        VALUES ${placeholder}`;

    let values = [];
    users.forEach(user => {
        values.push(user.id);
        values.push(user.username);
    });

一直在使用它并且工作正常。

答案 1 :(得分:0)

除了已经回答的内容之外,您的INSERT语句必然会抛出错误,因为date是一个关键字,应该像

一样进行转义
var sql = "INSERT INTO rsscontent (title,link,`date`,count) VALUES ?";