限制回送模型关系中的哪些HTTP方法

时间:2017-02-16 01:04:39

标签: models loopbackjs has-many http-method

所以我有一个具有以下相关关系的场地模型:

relations": {
  "events": {
    "type": "hasMany",
    "model": "event"
  },
},

在事件中我的关系为:

"relations": {
    "venue": {
      "type": "belongsTo",
      "model": "venue",
      "foreignKey": "venueId",
      "options": {
        "validate": true,
        "forceId": false
      }
    }
  },

在资源管理器中,它向我显示我可以获取,放置,发布,修补,更新和删除venue/:id/events

我在哪里以及如何说:无论您是谁,这种特定关系只能获得GET访问权限而不是其他内容?

1 个答案:

答案 0 :(得分:2)

对于hasMany Loopback添加了以下方法:

__findById__events
__destroyById__events
__updateById__events
__get__events
__create__events
__delete__events
__count__events

由于您只想获取访问权限,我们会保留findByIdgetcount,并停用其他内容。

假设您使用的是Loopback 3,您可以在模型中执行此操作:

Message.disableRemoteMethodByName('prototype.__destroyById__events');
Message.disableRemoteMethodByName('prototype.__updateById__events');
Message.disableRemoteMethodByName('prototype.__create__events');
Message.disableRemoteMethodByName('prototype.__delete__events');

请查看the documentation以获取更多信息。

如果您使用Loopback 2,则应该执行此操作(由Kiley Hykawy初始编写):

Message.disableRemoteMethodByName('__destroyById__events', false);
Message.disableRemoteMethodByName('__updateById__events', false);
Message.disableRemoteMethodByName('__create__events', false);
Message.disableRemoteMethodByName('__delete__events', false); 

false需要表明它是一个非静态方法,就像LoopBack 3的原型一样。