如何构造 falcor 路由器以获取所有可用的 ID?
How to structure falcor router to get all available IDs?
我正在尝试使用 Falcor 来显示 Guild Wars 2 API 并希望用它来显示游戏项目的详细信息。我对构建一个可以使用多个数据源来组合不同 API 的结果的路由器特别感兴趣。
要注意的是,激战 2 中的 Item IDs 并不连续。这是一个例子:
[
1,
2,
6,
11,
24,
56,
...
]
所以我不能像 items[100..120].name
那样只在客户端上写路径,因为几乎肯定会在该列表中出现一堆漏洞。
我已经尝试向我的路由器添加一条路由,这样我就可以请求 items
,但这会将它发送到客户端的无限循环中。你可以看到那个尝试 on GitHub.
有没有关于构建此结构的正确方法的指示?当我考虑更多时,也许我想要 item.id
?
您不应该发现自己从 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"]
这样行吗?
您可以使用 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));
})
我正在尝试使用 Falcor 来显示 Guild Wars 2 API 并希望用它来显示游戏项目的详细信息。我对构建一个可以使用多个数据源来组合不同 API 的结果的路由器特别感兴趣。
要注意的是,激战 2 中的 Item IDs 并不连续。这是一个例子:
[
1,
2,
6,
11,
24,
56,
...
]
所以我不能像 items[100..120].name
那样只在客户端上写路径,因为几乎肯定会在该列表中出现一堆漏洞。
我已经尝试向我的路由器添加一条路由,这样我就可以请求 items
,但这会将它发送到客户端的无限循环中。你可以看到那个尝试 on GitHub.
有没有关于构建此结构的正确方法的指示?当我考虑更多时,也许我想要 item.id
?
您不应该发现自己从 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"]
这样行吗?
您可以使用 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));
})