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

发布于 2024-12-08 07:23:56 字数 630 浏览 1 评论 0原文

当我使用 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 传递到视图?

谢谢!

I would like to pass the JSON object along with the view when I show a model Object in Node/Express using Mongo.

Curren route (passing just the view):

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,
      }
    });
  });
});

Can I add pagejson:page.toObject() to the locals and then put pagejson on my page somewhere? When I tried that it showed up as [object, Object] at the browser. Is there any easy way to pass the JSON to the view?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

·深蓝 2024-12-15 07:23:56

您应该查看 JSON 方法

在节点 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(...);
}

You should look at JSON methods

In node repl:

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

If you need to respond to the route in different ways (ex. requested via ajax) you can either pass a new parameter to the url app.get('/page/:customurl.:format', ... or checking the request headers stored in req.headers

if ( req.headers["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest" ) {
  res.send(document);
} else {
  res.render(...);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文