限制环回模型关系上的 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
由于您只想获取访问权限,我们保留 findById
、get
和 count
,并禁用其余部分。
假设您使用的是 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 的原型一样。
所以我有一个具有以下关系的场地模型:
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
由于您只想获取访问权限,我们保留 findById
、get
和 count
,并禁用其余部分。
假设您使用的是 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 的原型一样。