【发布时间】:2017-04-23 06:58:16
【问题描述】:
我正在开发一个简单的 MEAN 堆栈应用程序。我正在使用角度路由根据单击的项目的 ID 重定向到页面,如下所示:
when('/story/:id', {
template: '<news-detail></news-detail>'
})
当一个项目被点击时,它应该会转到这样的页面:http://localhost:3002/story/58fbcf765865db1d8da94b41
但在该页面上,我收到“无法获取 /story/58fbcf765865db1d8da94b41”节点错误。
从后端我试过这个:
app.get('/story/:id', function(req, res){
if(req){
var id = req.params.id;
PostProfile.News.findById(id, function(err, item){
if(item){
console.log("found")
res.send(item)
}
})
}
})
这个解决方案只是在页面上显示一些原始 json
{"_id":"58fbc2834f675c1cdb7dc628","title": .....
这是什么?我如何使用 angular 来通过 id 发出请求,而无需先通过 nodejs。
非常感谢。
【问题讨论】:
-
这是一个网络服务器(表达我假设)错误,而不是节点错误。您也可能有节点错误,但是您的代码没有输出错误,或者您没有找到查找位置(stderr、stdout 或日志)。首先,我将处理您的回调中的错误:
if (err){ console.error( err ))在您的 findById 中。另外,if(req)感觉很多余。如果您的快速路由方法中没有 req-object,那么您确实发生了一些奇怪的事情...... -
第 1 步,检查您的网络选项卡并检查呼叫以尝试找出它的距离(您所拥有的是服务器响应,所以继续!)。第 2 步:检查服务器端是否收到呼叫、记录、输出。第3步:没有错误?确保您的代码以某种方式输出错误。第 4 步:当您使用 SO 进行真正的错误检查时,但到那时您可能会弄清楚其余的! :) 你真正的问题是找到真正的错误信息。
-
只是为了理顺最后几位。
when('/story/:id', {这是一条有角度的路线。它假定[webroot]/story/:id。您的后端可能与您的 webroot 不同。是的,当然可以配置 express 或 nginx 或其他任何东西来捕获 /story/ 并确保后端得到它,但通常并非如此。正常的事情是清楚地分开正面和背面。 (例如/api/story/:id或另一个端口 `localhost:4004/story/:id'。)
标签: javascript angularjs node.js express