允许仅在内部服务调用时创建多个条目
Allowing to create multiple entries only on internal service calls
我想在内部服务调用中创建多个条目。但是对于外部传输(休息,websockets)这个功能应该仍然被阻止。
我知道可以在服务选项中将 multi 选项设置为 true 或 ['create'],但这并不能解决问题,因为外部传输可能会创建多个条目。
我的第一个解决方案是这样的:
someService.hooks.js
...
before: {
create: [
context => {
if (!context.params.provider) {
context.service.options.multi = true;
}
return context;
}
],
}
...
但这会完全覆盖所有服务调用的服务选项。
我想到的唯一其他解决方案是将 service.multi 设置为 true 并使用挂钩验证每个外部服务调用。
这是唯一可行的解决方案吗?还是我遗漏了什么?
您目前可以做的是启用 multi: [ 'create' ]
并检查挂钩是否是外部调用,并在这种情况下为数组抛出错误:
const { BadRequest } = require('@feathersjs/errors');
// ...
create: [
async context => {
if (context.params.provider && Array.isArray(context.data)) {
throw new BadRequest('Not allowed');
}
return context;
}
],
在即将发布的版本中,只需在 params
中传递 multi
选项(在 this issue 中跟踪)
我想在内部服务调用中创建多个条目。但是对于外部传输(休息,websockets)这个功能应该仍然被阻止。
我知道可以在服务选项中将 multi 选项设置为 true 或 ['create'],但这并不能解决问题,因为外部传输可能会创建多个条目。
我的第一个解决方案是这样的:
someService.hooks.js
...
before: {
create: [
context => {
if (!context.params.provider) {
context.service.options.multi = true;
}
return context;
}
],
}
...
但这会完全覆盖所有服务调用的服务选项。
我想到的唯一其他解决方案是将 service.multi 设置为 true 并使用挂钩验证每个外部服务调用。
这是唯一可行的解决方案吗?还是我遗漏了什么?
您目前可以做的是启用 multi: [ 'create' ]
并检查挂钩是否是外部调用,并在这种情况下为数组抛出错误:
const { BadRequest } = require('@feathersjs/errors');
// ...
create: [
async context => {
if (context.params.provider && Array.isArray(context.data)) {
throw new BadRequest('Not allowed');
}
return context;
}
],
在即将发布的版本中,只需在 params
中传递 multi
选项(在 this issue 中跟踪)