渲染无视图响应对象的Jade视图
我有一个复杂的asynchronouscallback链,并在链中的任何点,如果有错误,我想呈现一个错误消息的Jade模板。
在下面的函数partnerErr中,是否可以使用没有原始响应对象的模板进行响应?
app.post('/dashboard/partners/create', function (req, res) { console.log( req.body ); ParseUtils.doesUserExist( req.body.partnerEmail, function() { ShopifyUtils.doesPartnerExist( req.body.partnerShopSlug, function() { ParseUtils.createUser( req.body, function() { ShopifyUtils.createPartner( req.body, res.send( ' all good. parse and shopify passed. user created. '), partnerErr ); }, partnerErr ); }, partnerErr ); }, partnerErr ); }); function partnerErr(err) { console.log( 'rendering partner error' ); app.render('admin/partnersCreate', { error : err }, function(err, html) { console.log('html', html); }); }
首先,我会看看https://github.com/caolan/async来清理你的一系列asynchronous调用。 那么多嵌套几乎是不可读的。 它看起来像series
或waterfall
将满足您的需求在这里。 这也会大大减less您需要编写partnerErr
并将所有的错误检查逻辑移到一个地方。
这就是说,为什么不传递res
到partnerErr
并使用res.render
? 我正确理解你的问题吗?
UPDATE
我强烈build议你考虑重写一下,正如我上面所说的,但是,如果你想让它独立,你可以这样做:
app.post('/dashboard/partners/create', function(req, res) { console.log(req.body); ParseUtils.doesUserExist( req.body.partnerEmail, function() { ShopifyUtils.doesPartnerExist(req.body.partnerShopSlug, function() { ParseUtils.createUser(req.body, function() { ShopifyUtils.createPartner(req.body, res.send(' all good. parse and shopify passed. user created. '), partnerErr(res) ); }, partnerErr(res) ); }, partnerErr(res) ); }, partnerErr(res) ); }); function partnerErr(res) { return function(err) { console.log('rendering partner error'); res.render('admin/partnersCreate', { error: err }); } }
另一个select是将partnerErr
函数移到与partnerErr
相同的范围内,并且只需访问res
variables即可。 我不确定如何将partnerErr
与这个片断完全分离。
- Node,Express,Ajax和Jade示例
- Jade看* .jade文件吗?
- 为什么客户端在node + express + socket.io + jade简单的应用程序中断开连接并重新连接
- 如何在Node.JS中分别接收req.body.model的所有对象而不是它的所有variables?
- 链接到从子path呈现的Jade模板的静态文件
- Heroku(Cedar)+ Node + Express + Jade子目录中的客户端JavaScript文件在工作时使用foreman + curl,但是当推送到Heroku时
- 如何使用ExpressJS / RailwayJS(Node.JS)生成JSON
- 为什么我需要像后端的Jade或EJS这样的模板引擎?
- Express + jade:局部variables在视图中不可用