限制环回模型关系上的 HTTP 方法

Restrict which HTTP methods on a loopback model relationship

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

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

在事件中我的关系为:

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

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

在哪里以及怎么说:无论你是谁,这个特定的关系只能有 GET 访问权限,没有其他权限?

对于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 来表明它是一个 non-static 方法,就像 LoopBack 3 的原型一样。