在angular2课程之后,当我尝试从前端获取竞赛时,我最终得到了以下后端node.js服务器代码片段:
router.get('/', function(req,res,next) { // actually /contests/
Contest.find()
.populate('user', 'firstName')
.exec(function(err, docs) {
if (err) {
return res.status(404).json({
title: 'Error !',
error: err
});
}
res.status(200).json({
message: 'Success',
obj: docs
});
});
});
这工作得很好,当我到达它从我的应用程序内,但如果我试图通过简单地输入url访问它:…/contest/并按enter键,我只接收页面上显示的JSON对象,这不是我打算对正常应用程序做的。
我想做的是返回适当的页面(= render index.html文件的所有页面(angular2 SPA)),但也有一些JSON数据附加到响应,我可以在前端访问。有办法做到这一点吗?比如:
res.render('index', {message: 'Success', obj: docs}); // Not working
而不是
res.json({ ... })
对于不包含返回JSON的get的路由,一切正常。
我不明白代码片段是否在架构上是错误的,或者如果我只是愚蠢的,因为我在谷歌上找不到任何信息。我对node.js比较陌生。
任何帮助,输入或指针将不胜感激!
我现在意识到没有必要以这种方式访问比赛。我通过简单地将所有这些get转发到我的API端点来解决这个问题。