mongodb - 只允许在内部服务调用上创建多个条目
问题描述
我想在内部服务调用中创建多个条目。但是对于外部传输(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 并使用挂钩验证每个外部服务调用。
这是唯一可行的解决方案还是我错过了什么?
解决方案
您当前可以做的是启用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
中跟踪)即可
推荐阅读
- reactjs - 基于用户角色的路由
- android - 缩小后PNG图像质量下降
- python - Django Rest Framework 数字类型仍然通过模型验证
- javascript - Animated.Value 的 PropTypes?
- javascript - 如果未填写必填字段,如何防止在提交表单上调用函数?
- gwt - 带有 http 负载均衡器的 GWT 提供了无效的 SID 值
- python - 带有线程 Python 的 HTTP 请求
- amazon-dynamodb - K6 与 DynamoDB
- java - 如何使在方法之间传递的文件扫描器工作?
- macos - (Mac OS) 找不到匹配的射线分布