FeathersJS 自定义 API 检索枚举类型的方法,以在 React 中填充下拉列表

FeathersJS custom API method that retrieves enum Type, to fill a Dropdown in React

所以我试图用 mongoose

的枚举类型填充 select 组件

在我的用户服务中,架构类似于:

firstName: { type:String, required: true },
   ...
ris:{type: String, default: 'R', enum:['R', 'I', 'S']},

在我的羽毛服务中,我可以使用 "this.Model"

访问模型

所以我可以在任何钩子中做:

this.Model.schema.path('ris').enumValues); //['R','C','I']

然后我从枚举类型中获取值。

现在因为我无法创建除官方

之外的自定义 API 方法

如何创建服务 method/call/something 以便我可以在我的

中调用它
componentDidMount(){ var optns= this.props.getMyEnumsFromFeathers}

并使用枚举 ['R'、'C'、'I'] 来设置我的下拉列表

我正在使用 React/Redux/ReduxSaga-FeathersJS

我将在 find 方法中创建用于列出枚举的服务:

class EnumService {
  find(params) {
    const { service, path } = params.query;
    const values = this.app.service(service).Model.schema.path(path).enumValues;

    return Promise.resolve(values);
  }

  setup(app) {
    this.app = app;
  }
}

app.use('/enums', new EnumService())

然后在客户端就可以了

app.service('enums').find({ query: {
    service: 'myservice',
    path: 'ris'
  }
}).then(value => console.log('Got ', values));

我曾尝试使用此代码,但它无法即插即用。

在试用了应用服务之后,我找到了下面的代码

    async find(params) {
        const { service, path } = params.query;

        const values = await this.app.service(service).Model.attributes[path].values;

        return values || [];
      }

      setup(app) {
        this.app = app;
      }

我不确定这是否与使用的数据库有关,在我的情况下,我在开发环境中,所以,我使用的是 sqlite。