如何将参数传递给 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 函数

如何将参数传递给 Java 线程?

如何将参数传递给进程

如何通过反射将参数传递给方法

如何将参数传递给 erlang os:cmd()?