如何将参数传递给 MEAN.js 包的 express.js 服务器端路由。
Posted
技术标签:
【中文标题】如何将参数传递给 MEAN.js 包的 express.js 服务器端路由。【英文标题】:How do I pass in parameters to the express.js server side routing for a MEAN.js package. 【发布时间】:2017-02-22 01:20:03 【问题描述】:我是一名初学者,正在研究一个由 mean.js 构建的项目。我仍在试图弄清楚整个项目结构是如何工作的,但我有点卡住了。
目前,我有两个 crud 模块。一个项目模块和一个应用程序模块。用户应该能够申请项目。在某个项目下,我应该能够查看所有应用程序,然后接受/拒绝它们。
我在 angular $resource 上添加了一个自定义方法
function ProjectApplicationsService($resource)
return $resource('api/projects/:projectId/applications', projectId: '@_id' ,
accept:
method: 'PUT'
,
reject:
method: 'PUT'
);
一旦我点击了某个应用对应的按钮,就会触发这个功能,并把应用ID作为参数传入。
function acceptApp(applicationID)
vm.application._id = vm.project._id;
vm.application.app_id = applicationID;
vm.application.$accept(successCallback, errorCallback);
function successCallback(res)
console.log("success");
function errorCallback(res)
vm.error = res.data.message;
console.log(vm.error);
这应该调用一个 API 来表达,这里是它的路由
app.route('/api/projects/:projectId/applications')
.get(users.requiresLogin, projects.hasAuthorization, projects.getApplications)
.put(users.requiresLogin, projects.hasAuthorization, projects.updateApplication)
.delete(users.requiresLogin, projects.hasAuthorization, projects.deleteApplication);
基本上,我想最终调用 updateApplication 但如何在此方法中获取应用程序 ID?
【问题讨论】:
【参考方案1】:假设您要向服务器上传一些内容,这将触发您的 put
路由 - 其中包含您要调用的函数。
你需要像这样构造你的句柄:
function(request,response,next) // usually abbreviated to `req,res`
handleData();
next(); // move onto the next function;
参数很容易记住,请求在响应之前,然后是下一步——只有当你想移动到另一个处理程序时才需要下一步。
如果您不调用next()
,路由将停止 - 一旦授权成功,您可能需要调用下一个。
数据保存在请求正文中,因此您可以使用 request.body
访问它
注意:记得回复您的用户 - 使用 res.send("success")
之类的内容,否则他们会超时
【讨论】:
伙计,我真的只是想通了。 Request.body 是关键。谢谢!!以上是关于如何将参数传递给 MEAN.js 包的 express.js 服务器端路由。的主要内容,如果未能解决你的问题,请参考以下文章
如何将令牌存储作为参数传递给 Symfony 3.4 中的事件监听器
如何将 POST 参数传递给 Durable Function,然后将此参数传递给 Timer Triggered 函数