覆盖风帆GET蓝图与多对一

时间:2015-04-24 18:03:28

标签: node.js rest routes sails.js

警告:网络编程的新手。我在帆项目中有以下内容:

// in models/User.js
// user has many videos
module.exports = {
  attributes: {
    videos: {
      collection: 'video',
      via: 'owner'
    }
  }
}

// in models/Video.js
// video has one user
module.exports = {
  attributes: {
    owner: {
      model: 'user'
    }
  }
}

我使用带有/ v1前缀的REST蓝图。我试图覆盖GET / v1 / user /:id / video,或者自定义路由到GET / v1 / user /:id / myGetVideo

所以我尝试了以下内容:

  1. 在VideoController.js和UserController.js中查找和查找一些方法。这些不会触发GET / v1 / user /:id / video - 我猜是因为多对一关联的处理方式不同

  2. 创建自定义路线

    在routes.js中

    // module.exports.routes = {   ' get / user /:id / myGetVideo':' UserController.myGetVideo' }

  3. 由于命名空间,它不会触发任何内容,但它会按预期触发/ user /:id / myGetVideo。我不想在这里添加/ v1名称空间b / c,这将扩散并成为更改版本的问题。

    那么,我如何覆盖我想要的方法,或者将它放在命名空间中?覆盖第一种方法看起来更干净,但是idk。

    感谢您的帮助!

    编辑:关于什么是REST API的更好实践的任何评论?

1 个答案:

答案 0 :(得分:1)

使用通配符:

// in routes.js 
module.exports.routes = { 'get /v*/user/:id/myGetVideo':'UserController.myGetVideo' }

如果前缀方案改变,则不是防弹的,但是足够好