如何在nodejs中发送多个查询(请参见代码)

时间:2018-08-08 11:10:00

标签: node.js

我使用html表单标签收到了一些信息

post={count:[1,2,3]}

收集的信息是“帖子”

exports.log_create_process = function(request, response){
 var _url = request.url;
 var queryData = url.parse(_url, true).query;
 var body = '';
 request.on('data', function(data){
     body = body + data;
 });
 request.on('end', function(){
   var post = qs.parse(body);
   var title = post.title;
   var description = post.description;
   var query=``;
   for(var i=0; i<post.length; i++){
     db.query(`INSERT INTO stock_log(count) VALUES (${post[i}.count);`,function(error, result){
         response.end();
     });
   }
 });
} 

我的目标是发送查询3次。假设表最初是空的。 log_create_process完成后,表应如下所示:

| count|
|  1   |
|  2   |
|  3   |

1 个答案:

答案 0 :(得分:1)

在您的示例中,因为db.queryasynchronous,所以您将在第一次插入之后收到响应。

因此,如果要插入3条记录,可以通过一个查询插入它们,如下所示:

const sqlStatement = "INSERT INTO stock_log(count) VALUES ?";
const values = post.count;

db.query(sqlStatement, [values], function (err, result) {
    if (err) response.status(500).send("server error");
    response.end();
});

OR 执行多次查询,但要等到它们完成响应为止。
 使用提供承诺的数据库库,例如node-promise-mysql

// here we assume that db.query returns a Promise.
const queryPromisesArray = post.count.map(p => db.query(`INSERT INTO stock_log(count) VALUES (${p});`));

Promise.all(queryPromisesArray).then(values => {
  response.end();
});

希望有帮助,
最好的问候