只允许在内部服务调用中创建多个条目



我想在一个内部服务调用上创建多个条目。但是对于外部传输(rest、websocket(,该功能仍然应该被阻止。

我知道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选项即可实现

相关内容

  • 没有找到相关文章

最新更新