gpt4 book ai didi

javascript - 使用 for 或 forEach 查询 json 中的每个对象

转载 作者:行者123 更新时间:2023-11-30 21:28:32 24 4
gpt4 key购买 nike

我的问题是,我想使用某个循环对 JSON 中的每个对象进行 INSERT 查询,但我几乎总是收到错误消息“将 header 发送到客户端后无法设置”。有人可以帮忙吗?Tnx

const connection = require('./config');

module.exports.excel = function (req, res) {

var _query = 'INSERT INTO excel (id, first_name, last_name) values ?';

var jsonData = req.body;

var values = [];

function database() {
return new Promise((resolve, reject) => {
jsonData.forEach((value) => {
values.push([value.id, value.first_name, value.last_name]);
connection.query(_query, [values], (error, results) => {
if (error) {
reject(
res.json({
status: false,
message: error.message
}))
} else {
resolve(
res.json({
status: true,
data: results,
message: 'Excel file successfully created in database'
}))
}
});

});
})

}
async function write() {
await database();
}

write();
}

在我从 Angular 6 前端获取 JSON 后,我将 req.body 放入 jsonData 并尝试使用 forEach 将每个对象(在本例中为“值”)放入查询并将其写入 Excel 文件。

最佳答案

您必须将每个查询 包装在Promise 中并等待所有完成,然后使用 Promise.all 发送 response

并不是说 database() 会在其中一个查询失败时throw 并且您将无法访问已解决的 promise 。

const connection = require('./config');

module.exports.excel = function(req, res) {
const _query = 'INSERT INTO excel (id, first_name, last_name) values ?';

const jsonData = req.body;

function database() {
return Promise.all(
jsonData.map(
value =>
new Promise((resolve, reject) => {
const values = [value.id, value.first_name, value.last_name]

connection.query(_query, [values], (error, results) => {
if (error) {
reject(error.message);
return;
}
resolve(results);
});
})
)
);
}

async function write() {
try {
const results = await database();
res.json({
status: true,
data: results,
message: 'Excel file successfully created in database'
});
} catch (e) {
res.json({
status: false,
message: e.message
});
}
}

write();
};

关于javascript - 使用 for 或 forEach 查询 json 中的每个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57563824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com