如何将参数传递给MEAN.js包的express.js服务器端路由。

时间:2016-10-13 04:10:41

标签: javascript angularjs node.js express angular-ui-router

我是一名初学者,正在开发一个由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 个答案:

答案 0 :(得分:0)

假设您要将某些内容上传到服务器,这将触发您的put路由 - 其中包含您要呼叫的功能。

您需要像这样构建句柄:

function(request,response,next){ // usually abbreviated to `req,res`
    handleData();
    next(); // move onto the next function;
}

参数很容易记住,请求在响应之前,然后是下一个 - 当你想要移动到另一个处理程序时,你只需要下一个。

如果你没有打电话给next(),路线就会停止 - 一旦授权成功,你可能想要拨打下一个电话。

数据保存在请求正文中,因此您可以使用request.body

访问它

注意:请记住回复您的用户 - 使用res.send("success"),或者他们会超时