(节点:7636)UnhandledPromiseRejectionWarning:错误:发送标头后无法设置标头。
在validateHeader(_http_outgoing.js:491:11)
在ServerResponse.setHeader(_http_outgoing.js:498:3)
在ServerResponse.header (C:\ Users \ username \ path \ Express \ node_modules \ express \ lib \ response.js:767:10)
在ServerResponse.send(C:\ Users \ username \ path \ Express \ node_modules \ express \ lib \ response.js:170:12)
在ServerResponse.json(C:\ Users \ username \ path \ Express \ node_modules \ express \ lib \ response.js:267:15)
在ServerResponse.send(C:\ Users \ username \ path \ Express \ node_modules \ express \ lib \ response.js:158:21)
在body.rows.forEach(C:\ Users \ username \ path \ Express \ app.js:41:15)
在Array.forEach()
然后在db.list.then(C:\ Users \ username \ path \ Express \ app.js:40:19)
在
(节点:7636)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。引发此错误的原因可能是抛出了一个没有catch块的异步函数,或者是拒绝了一个.catch()无法处理的承诺。 (拒绝ID:2)
以下是查询的代码:
app.get("/api/customers", (req, res, next) =>{
res.header("Access-Control-Allow-Origin", "http://localhost");
res.header("Access-Control-Allow-Methods", "GET, POST");
res.writeHead(200, {'Content-Type': 'application/json'});
db.list({ include_docs: true }).then((body) => {
body.rows.forEach((doc) => {
res.send(doc.doc);
});
});
});
我想使用angularjs在html页面上显示数据。
我将不胜感激。
答案 0 :(得分:0)
您正在尝试在循环内多次发送数据,因此出现该错误。 您为什么不发送如下的全身数据:
app.get("/api/customers", (req, res, next) =>{
db.list({ include_docs: true }).then((body) => {
res.send({data: body.rows});
}).catch(e => {res.status(500).send({msg: 'Sorry, something went wrong'})});
});
更新1
要启用CORS,请创建一个中间件并将其添加到您的应用中
//CORS middleware
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
}
app.use(allowCrossDomain)