4

我正在尝试使用 Falcor 来支持Guild Wars 2 API,并希望用它来显示游戏项目的详细信息。我对构建一个可以使用多个数据源来组合不同 API 的结果的路由器特别感兴趣。

问题是,激战 2 中的物品 ID不是连续的。这是一个例子:

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

所以我不能像这样在客户端上写路径,items[100..120].name因为几乎可以肯定该列表中会有一堆漏洞。

我尝试向我的路由器添加一条路由,这样我就可以 request items,但这会将它发送到客户端上的无限循环中。您可以在 GitHub 上看到该尝试。

关于构建这个的正确方法的任何指针?当我想得更多时,也许我想要item.id呢?

4

2 回答 2

3

您不应该发现自己从 Falcor JSON Graph 对象中询问 id。

您似乎想要构建一系列游戏 id:

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

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

那样有用吗?

于 2015-08-19T18:23:28.653 回答
0

您可以使用 Falcor 的“get”API,它检索多个值。您可以传递任意数量的必需属性,如下所示

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));
            })
于 2016-04-03T05:11:32.383 回答