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

问题描述 投票:0回答:1

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

我知道multi选项可以设置为true或服务选项中的['create'],但这并不能解决这个问题,因为外部传输可以创建多个条目。

我的第一个解决方案是这样的。

SomeService.hooks.js

...
before: {
  create: [
    context => {
      if (!context.params.provider) {
        context.service.options.multi = true;
      }
      return context;
    }
  ],
}
...

但这完全覆盖了所有服务调用的服务选项。

我想到的唯一的其他解决方案,是将service.multi设置为true,并用钩子验证每个外部服务调用。

这是否是唯一可行的解决方案,还是我遗漏了什么?

mongodb feathersjs
1个回答
1
投票

你目前可以做的是启用 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;
    }
  ],

在即将到来的版本中,这将是可能的,只需通过传入 multi 选项中 params (跟踪时间:2010年12月31日) 本期)

© www.soinside.com 2019 - 2024. All rights reserved.