【问题标题】:override sails GET blueprint with many-to-one用多对一覆盖帆 GET 蓝图
【发布时间】:2015-07-03 11:17:41
【问题描述】:

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

// 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 中查找和 findOne 方法。这些不会触发 GET /v1/user/:id/video - 我猜是因为多对一关联的处理方式不同

  2. 创建自定义路线

    // 在 routes.js 中 模块.exports.routes = { 'get /user/:id/myGetVideo': 'UserController.myGetVideo' }

由于命名空间,这不会触发任何事情,但它会按预期触发 /user/:id/myGetVideo。我不想在这里添加 /v1 命名空间 b/c 会激增并成为更改版本的问题。

那么,我该如何重写我想要的方法,或者将它放在命名空间中?覆盖第一个方法似乎更干净,但 idk。

感谢您的帮助!

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

【问题讨论】:

    标签: node.js rest routes sails.js


    【解决方案1】:

    用通配符搞定:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 2016-11-12
      • 2016-02-25
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 2014-04-08
      相关资源
      最近更新 更多