我正在构建一个MEAN堆栈应用程序,但遇到了一个问题,Angular无法识别我渲染的url中的模块,所以它在执行前端获取请求之前就抛出了一个错误并崩溃了。
我在routes/index.js文件中写了这段代码,其中table
是视图页。
router.get('/table/user/:id', function(req, res){
User.findById(req.params.id).populate('entries').exec(function(err, entries){
if(err){
console.log(err)
} else {
res.render('table', { entries: entries})
}
});
});
Angular CAN在到达url /table
时执行get-req,但路由指向/table/user/203029384029384
,即我的Node请求的url。我觉得这应该只是渲染/table
,但事实并非如此。
如果router.get在table/user/:id
渲染/table
,我需要什么。似乎这个代码应该做到这一点,不是吗?PLMK如果我需要添加任何其他项目代码进行解释。
您可能误解了AngularJS呈现页面的方式——对于表数据和表html将有一个单独的http请求。然后AngularJS将数据放入客户端的html中。
您提供的ExpressJS代码将只响应对/table/user/xxxxx
的请求,而不是对/table
的请求。因此,您需要在Node/Express中制作一个视图路由器来单独渲染视图。然后,您还需要在AngularJS中运行一个控制器,将数据拼接到您的视图中——数据是在客户端而不是服务器端合并的。