res.render 传递的对象,它们叫什么?

我一直在为 res.render 中的这些对象苦苦挣扎,我如何在全局范围内或以某种方式在 res.render 之外定义它们?我希望有办法做到这一点..这是一个例子:


router.get("/home/blog", function(req,res){

    Sandwich.find({}, function(err,posts){

        if(err){

            console.log(err);         

        } else {          

                res.render("blog", {posts:posts} <--------- These )            

        }

    });


宝慕林4294392
浏览 225回答 2
2回答

慕田峪9158850

该对象是一个对象字面量。出于您提供的示例的目的,有两种可能的方法可以在内部传递对象res.render{ 对象 }const obj = req.bodyres.render('success',{obj}){ obj : obj } // 就像你已经拥有它一样我如何在全球范围内或以某种方式在 res.render 之外定义它们?您必须知道传递给响应的对象res.render在此响应的范围内已经是全局可访问的。如果您有不符合此要求的要求,可以扩展res.localsres.locals(属性)来自Express Docs 4.x API范围为请求,仅可用于在该请求/响应周期(如果有)期间呈现的视图。app.use(function (req, res, next) {&nbsp; res.locals.user = req.user&nbsp; res.locals.authenticated = !req.user.anonymous&nbsp; next()})

幕布斯7119047

res.render 传递的对象,它们叫什么?它只是传递给模板渲染器的参数。文档将其res.render()称为“本地对象”。这是文档显示的内容”res.render(view [, locals] [, callback])locals, an object whose properties define local variables for the view.我如何在全球范围内或以某种方式在 res.render 之外定义它们?您通常不会全局定义它们,因为您呈现的每个模板都应该有一组独特的数据,用于呈现页面。如果您的模板的某些部分对于您服务器上的每个用户来说实际上都是相同的,您可以创建一个共享对象(不是全局),将其导入任何路由文件,然后将该共享对象放入您的本地对象您作为属性传递给渲染器。不建议将全局变量用于这种用途。在您显示的特定路线中,您不能将帖子放入全局甚至共享对象,因为当人们添加/删除帖子时,该全局或共享对象不会得到更新。仅供参考,当您在查询数据库时遇到错误时,您仍然需要发送对请求的响应,可能是 5xx 状态响应或呈现错误页面。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript