Как структурировать маршрутизатор 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));
})