Как структурировать маршрутизатор Falcor, чтобы получить все доступные идентификаторы?

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

Суть в том, что идентификаторы предметов в Guild Wars 2 не являются смежными. Вот пример:

[
    1,
    2,
    6,
    11,
    24,
    56,
    ...
]

Поэтому я не могу просто написать пути на клиенте, как items[100..120].name потому что в этом списке почти наверняка будет куча дыр.

Я попытался добавить маршрут к маршрутизатору, чтобы я мог просто запросить items, но это отправляет его в бесконечный цикл на клиенте. Вы можете увидеть эту попытку на GitHub.

Любые указатели на правильный способ структурировать это? Как я думаю об этом больше, может быть, я хочу item.id вместо?

2 ответа

Решение

Вы не должны найти себя, запрашивающего идентификаторы из объекта Falcor JSON Graph.

Кажется, вы хотите создать массив игровых идентификаторов:

{
    games: [
        { $type: "ref", value: ["gamesById", 352] },
        { $type: "ref", value: ["gamesById", 428] }
        // ...
    ],
    gamesById: {
        352: {
            gameProp1: ...,
        },
        428: {
            gameProp2: ...
        }
    }
}

[games, {from: 5, to: 17 }, "gameProp1"]

Это работает?

Вы можете использовать "get" API Falcor, он получает несколько значений. Вы можете передать любое количество обязательных свойств, как показано ниже

var model=new falcor.Model({
             cache:{       
                     genereList:[
                                    {name:"Recently Watched",
                                     titles:[
                                         {id:123,
                                          name: "Ignatius",
                                         rating: 4}
                                     ]    
                                    },
                                    {name:"New Release",
                                     titles:[
                                         {id:124,
                                          name: "Jessy",
                                         rating: 3}
                                     ]    
                                    }
                                ]
                            }

            });
            Getting single value
            model.getValue('genereList[0].titles[0].name').
            then(function(value){
               console.log(value);
           });

            Getting multiple values
            model.get('genereList[0..1].titles[0].name', 'genereList[0..1].titles[0].rating').
            then(function(json){
                console.log(JSON.stringify(json, null, 4));
            })
Другие вопросы по тегам