在Sails操作中访问url参数

时间:2018-09-04 02:07:09

标签: javascript sails.js

我有一个Sails应用程序,我正试图根据id模型的recipe从数据库中加载一些数据。

我已经设置了路由'GET /recipes/single-recipe/:id': { action: 'recipes/view-single-recipe' },并且正在访问网址http://localhost:1337/recipes/single-recipe/5b8c169936f1df3439fa39c7

在我的view-single-recipe动作中,我试图通过访问req.param('id')来加载URL参数为id的配方,但是req显示为未定义。

//view-single-recipe.js
module.exports = {


  friendlyName: 'View single recipe',


  description: 'Display "Single recipe" page.',


  exits: {

    success: {
      viewTemplatePath: 'pages/recipes/single-recipe'
    }

  },


  fn: async function(inputs, exits) {
    const recipe = await Recipe.find({
      id: req.param('id') //req undefiend
    });
    // Respond with view.
    return exits.success({
      recipe: recipe
    });

  }


};

获取错误:error: Sending 500 ("Server Error") response: ReferenceError: req is not defined

如何使用url参数加载正确的配方?

1 个答案:

答案 0 :(得分:0)

如果您有路由 /recipes/single-recipe/:id' ,则URL路径中的“ id ”将是可用为 req.params.id 。否则,默认为{}来获取更多info

更新:

但是关于动作和控制器Sails.js使用 machine-as-action 模块自动创建 route-handling 可以在example这样的机器上运行。请参阅more information的机器操作文档。

请注意,“行动机器”提供的操作可以访问 request 对象,而不仅仅是<{1}} ,否则将出现服务器错误 this.req 。因此,不要忘记req 关键字,以备将来参考。