我使用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 |
答案 0 :(得分:1)
在您的示例中,因为db.query
是asynchronous,所以您将在第一次插入之后收到响应。
因此,如果要插入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();
});
希望有帮助,
最好的问候