Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?

Posted

技术标签:

【中文标题】Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?【英文标题】:Node.js / Express / Mongoose - How to Send JSON along with view of Object? 【发布时间】:2011-11-30 23:06:52 【问题描述】:

当我使用 Mongo 在 Node/Express 中显示模型对象时,我想将 JSON 对象与视图一起传递。

当前路线(仅经过视图):

app.get('/page/:customurl', function(req, res, next) 
  Page.findOne( customurl: req.params.customurl.toLowerCase(), function(error, page) 
    if (!page) return next(new NotFound('Document not found'));
    res.render('pages/page_show.ejs',
       locals: 
          title: 'ClrTouch | ' + page.title,
          page:page,
      
    );
  );
);

我可以将pagejson:page.toObject() 添加到本地人,然后将pagejson 放在我的页面上的某个地方吗?当我尝试它在浏览器中显示为 [object, Object] 时。有没有简单的方法将 JSON 传递给视图?

谢谢!

【问题讨论】:

【参考方案1】:

你应该看看JSON methods

在节点repl中:

> var document = a: 'first property', b: 'second property';
> JSON.stringify(document)
'"a":"first property","b":"second property"'
> 

如果您需要以不同的方式响应路由(例如通过 ajax 请求),您可以将新参数传递给 url app.get('/page/:customurl.:format', ... 或检查存储在 req.headers 中的请求标头

if ( req.headers["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest" ) 
  res.send(document);
 else 
  res.render(...);

【讨论】:

酷。好吧,我想做什么,我不完全知道这是否有意义是响应纯 html 获取请求,对象为 JSON。有点像发送视图,然后让浏览器调用 .getJSON() 并返回 json。我想在 JSON 中使用整个页面属性,而不必从浏览器中调用它。 @tuddy 你总是可以在你的模板中设置一个<script id="document_object" type="object/json"><%= JSON.stringify(page) %></script>,这样你就可以通过JSON.parse($("#document_object").html());取回对象。

以上是关于Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?的主要内容,如果未能解决你的问题,请参考以下文章

夺命雷公狗---node.js---17之项目的构建在node+express+mongo的博客项目2之一,二级路由

夺命雷公狗---node.js---16之项目的构建在node+express+mongo的博客项目1

夺命雷公狗---node.js---18之项目的构建在node+express+mongo的博客项目3头尾左侧分离法

夺命雷公狗---node.js---22之项目的构建在node+express+mongo的博客项目7之数据的修改

夺命雷公狗---node.js---19之项目的构建在node+express+mongo的博客项目4mongodb在项目中的基本引入

夺命雷公狗---node.js---20之项目的构建在node+express+mongo的博客项目5mongodb在项目中实现添加数据