Зависимость данных Flux / Alt, как обрабатывать элегантно и идиоматически

я используюальт как моя реализация потока для проекта, и у меня возникли проблемы с нахождением наилучшего способа обработки хранилищ для двух связанных объектов. я используюисточники вместе с registerAsync для обработки моих вызовов async / api и привязки их к моим представлениям с помощью AltContainer.

У меня есть две сущности, связанные один к одному посредством разговорного идентификатора. Оба загружаются через вызов API:

Как только мое хранилище вакансий загружено данными, я хочу заполнить хранилище бесед.

Я использую источник для загрузки магазина вакансий:

module.exports = {
    fetchJobs() {
        return {
            remote() {
                return axios.get('api/platform/jobs');

            },....

Похоже, работа дляждать() метод, но он подходит для использования, когда содержимое одного хранилища требует преобразования или слияния с содержимым другого. Мне нужно получить содержимое одного хранилища данных на основе содержимого другого.

В общих чертах мне нужно:

Вызовите сторонний API и загрузите список объектов в магазин.Когда эти данные поступают, мне нужно использовать атрибут каждого из вышеперечисленных для вызова другого API и загрузки этих данных в другое хранилище.

Мое наивное решение состоит в том, чтобы ссылаться на действия беседы из хранилища заданий и отправлять событие, когда поступают данные. Что-то вроде этого:

var jobActions = require('../actions/Jobs');
var conversationActions = require('../actions/Conversations');

class JobStore {
    constructor() {
        this.bindListeners({
            handlefullUpdate: actions.success
        });...

    }

    handlefullUpdate(jobs) {
        this.jobs = jobs;
        conversationActions.fetch.defer(jobs);
    }
}

Конечно, это нарушает изречение о том, что хранилища не должны отправлять события, и поэтому я должен использовать defer для отправки действия в середине отправки. Это имеет смысл для меня, так как, похоже, идя по этому пути, я вновь вводю всевозможные побочные эффекты в своем коде; теряя красоту "функциональных конвейеров", которые я должен видеть с потоком.

Кроме того, мое хранилище вакансий должно содержать ссылку на любые зависимые объекты, чтобы оно могло отправлять соответствующее действие. Здесь у меня есть только один, но я мог представить себе много. С точки зрения зависимостей между сущностями это кажется полностью задом наперед.

На ум приходит пара альтернатив:

Я могу позвонитьAPI / платформа / работа конечная точка в источнике / действии, где я получаю все разговоры, просто чтобы получить идентификатор. Оригинальный подход более эффективен, но это кажется более правдоподобным в духе изменения, поскольку я теряю все перекрестные помехи.

Я также мог бы иметь одно действие / источник, который выбирает оба, возвращая{jobs:{}, conversations: in the action} (организовать там зависимость с помощью обещаний) и использовать это заполнить оба хранилища. Но этот подход кажется мне излишне сложным (я чувствую, что не должен был этого делать!).

Но я пропускаю другой путь? Кажется странным, что такой общий случай использования нарушил бы элегантность потока и / или заставил бы меня перепрыгнуть через множество обручей.

@dougajmcdonald задал похожий вопросВот, но, возможно, это было сформулировано слишком широко, и не получило никакой тяги:

Ответы на вопрос(3)

Ваш ответ на вопрос