2015-08-19 1 views
4

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

Уловка, Item IDs в Guild Wars 2 не соприкасается. Вот пример:

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

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

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

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

ответ

3

Вы не должны искать себя, запрашивая идентификаторы от объекта 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"] 

ли это работа?

+0

добавить свой код здесь, а только ссылки –

+0

Может быть я я просто не понимаю, как использовать Falcor/JSON Graph, я, вероятно, так и есть. Я хочу показать первые 100 предметов с их именем/значком/ценой. Кажется простым спросить мой маршрутизатор для 'items [1..100] ['id', 'name', 'price']', но я могу разобраться, как структурировать серверный компонент, чтобы он возвращал это правильно. – Tivac

+1

Нужно было более внимательно рассмотреть комбинацию 'items.length' и' items', возвращающих refs в 'itemById' getter. https://github.com/tivac/falcor-experiment/commit/8d2a3a6a08dab00c9689e6ac1aadfd7faea0df75 – Tivac

0

Вы можете использовать «получить» 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)); 
      })