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 方法
- https://docs.feathersjs.com/clients/readme.html#caveats
- https://docs.feathersjs.com/help/faq.html#can-i-expose-custom-service-methods
如何创建服务 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。
所以我试图用 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 方法- https://docs.feathersjs.com/clients/readme.html#caveats
- https://docs.feathersjs.com/help/faq.html#can-i-expose-custom-service-methods
如何创建服务 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。