我如何传递参数到express.js服务器端路由为MEAN.js包

How do I pass in parameters to the express.js server side routing for a MEAN.js package.

本文关键字:js 服务器端 路由 MEAN express 何传递 参数      更新时间:2023-09-26

我是一个在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调用express,这里是该

的路由
  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 ?

假设您要上传一些东西到服务器,这将触发您的put路由-其中包含您想要调用的函数。

你需要这样构造你的句柄:

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

参数很容易记住,request出现在response之前,然后next -只有当你想要移动到另一个处理程序时才需要next。

如果您不调用next(),路由将停止-一旦授权成功,您可能会想要调用next。

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

访问它。

注意:记住响应您的用户—使用类似res.send("success")的东西,否则他们将超时