我想从表单中获取数据,并以此为基础,将数据添加到mySQL中的三个表中,我使用Sequelize这样做,但是我不怎么做,我当前的想法给出了错误:
未处理的拒绝错误[ERR_HTTP_HEADERS_SENT]:无法设置标题 将它们发送给客户之后
我的代码是这样的:
app.post("/device/add", (req, res) => {
db.Devices.create({
device_id: req.body.device_id,
server: req.body.server,
type: req.body.type
})
.then(result => {
res.json(result);
})
.catch(err => {
throw err;
});
db.Modules.create({
device_id: req.body.device_id,
device_options: req.body.device_options,,
sleep_options: req.body.sleep_options
})
.then(result => {
res.json(result);
})
.catch(err => {
throw err;
});
db.Tests.create({
device_id: req.body.device_id,
gsm_tests: req.body.gsm_tests,
led_tests: req.body.led_tests,
})
.then(result => {
res.json(result);
})
.catch(err => {
throw err;
});
});
我能以某种方式创建它吗?或如何使其工作
答案 0 :(得分:0)
问题是您在发送响应后尝试再次发送响应。
有关更多说明,请参见here
您可以使用Promise.all()累积结果,然后通过一次res.json()调用将其发送。
const createDevice = db.Devices.create({
device_id: req.body.device_id,
server: req.body.server,
type: req.body.type
})
const createModules = db.Modules.create({
device_id: req.body.device_id,
device_options: req.body.device_options,
sleep_options: req.body.sleep_options
})
const createTests = db.Tests.create({
device_id: req.body.device_id,
gsm_tests: req.body.gsm_tests,
led_tests: req.body.led_tests,
})
Promise
.all([createDevice , createModules , createTests ])
.then(result=> {
res.json({
devices: result[0],
modules: result[1],
test : result[2]
});
})
.catch(err => {
throw(err);
});