可以't在发送标头后设置标头.调用create(data,cb)时
Can't set headers after they are sent. While calling create(data,cb)
我是节点的新手,正在尝试在mongodb中创建一个模型。当我调用localhost:3000/a时。我在控制台中看到两次请求也出现错误。在发送后无法设置标题
module.exports = function(app) {
app.get('/',function(req,res){
res.render("adminpanel/panel",{});
});
app.get('/a',function (req,res,cb) {
console.log(req.url)
var User = app.models.test;
var user = app.models.test();
user.username = "admin";
user.type = "hey";
user.password = "132";
user.email = "admin@test.com";
User.create(user,cb);
res.send("hey");
});
};
输出:output:
/a
/a
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11)
at ServerResponse.header (E:'workspace'orderapp'node_modules'express 'lib'response.js:718:10)
at ServerResponse.contentType (E:'workspace'orderapp'node_modules'express'lib'response.js:551:15)
at ServerResponse.send (E:'workspace'orderapp'node_modules'express'lib'response.js:138:14)
at E:'workspace'orderapp'server'boot'root.js:14:9
at Layer.handle [as handle_request] (E:'workspace'orderapp'node_modules'express'lib'router'layer.js:95:5)
at next (E:'workspace'orderapp'node_modules'express'lib'router'route.js:131:13)
at Route.dispatch (E:'workspace'orderapp'node_modules'express'lib'router'route.js:112:3)
at Layer.handle [as handle_request] (E:'workspace'orderapp'node_modules'express'lib'router'layer.js:95:5)
at E:'workspace'orderapp'node_modules'express'lib'router'index.js:277:22
当您完成请求,然后尝试在同一请求上发送更多时,就会发生错误。这种情况通常发生在有人在异步处理中犯了错误,从而混淆了在请求对象上发送东西的时间。
我发现您的代码有两个问题。首先,您试图从路由处理程序调用next()
,就好像您实际上还没有完成对请求的处理一样。其次,在调用next()
之前发送res.send()
,因为User.create()
是异步的,稍后会完成。
我建议你使用这个:
app.get('/a',function (req,res) {
console.log(req.url)
var User = app.models.test;
var user = app.models.test();
user.username = "admin";
user.type = "hey";
user.password = "132";
user.email = "admin@test.com";
User.create(user,function() {
res.send("hey");
});
});
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- Rails:如何在jQuery(.js.erb)中调用“create”操作
- 检查Google Analytics是否已加载并调用ga('create',..)
- extjs存储有时调用create而不是update
- 有人可以解释一下这段代码在做什么吗?调用 Class.create() 时实际会发生什么
- chrome.tabs.create/executeScript >属于页面的调用函数
- 可以't在发送标头后设置标头.调用create(data,cb)时
- 如何从collection.create调用中获取model.id
- 圣经般的"Sortable.create()"方法在进行AJAX调用以更新无序列表后不起作用
- 在for循环中调用异步的chrome.tab .create
- chrome.tabs.create - 从未调用过回调函数
- Javascript在Object Literal方法中直接调用方法和使用Object.create方法的区别
- Stripe.js:调用stripe.charge .create的API调用没有返回响应