2017-02-13 13 views
0

Так что я пытаюсь заполнить выберите компонент с типом перечислений из мангустаFeathersJS пользовательский метод API, который возвращает перечисление типа, чтобы заполнить раскрывающийся в React

В моей службе пользователя схема выглядит примерно так:

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 другой, что чиновники из них

Как я могу создать метод обслуживания/вызова/что-то, что я могу назвать это в моем

componentDidMount(){ var optns= this.props.getMyEnumsFromFeathers} 

и есть перечисление [ 'R', 'C', 'I'] для настройки моего ниспадающего

Я использую React/Redux/ReduxSaga-FeathersJS

ответ

1

Я бы создать службу для перечисления перечислений в методе 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)); 
+0

прекрасно работает ... Спасибо. В другом случае у меня был плохая просьба 400 и больше ничего на консоли. но в браузере я получил объект «errors» со всеми подробностями, я не уверен, что это потому, что я использую перья-клиент ... вопрос в том, где этот объект «ошибок», исходящий от причины, мне нужно bubble up/обрабатывать информацию пользователю – yokodev

+0

Зависит от того, как вы настраиваете регистрацию. С текущим значением по умолчанию (https://github.com/feathersjs/feathers-chat/blob/master/src/middleware/logger.js#L18) вы также можете зарегистрировать 'error.errors'. – Daff

+0

Got It !!!, Это именно то, что мне нужно. есть ли способ бросить это обратно клиенту, чтобы я мог показать всплывающее окно или что-то еще? – yokodev