Falcor 路由特定中间件
Falcor route specific middleware
假设服务器上有以下路由器 class 运行:
var PetsRouterBase = Router.createClass([{
route: 'petList[{integers:indices}].name',
get: function(pathSet) {
return [
{
path: ['petList', 0, 'name'],
value: 'Pets I have now'
},
{
path: ['petList', 1, 'name'],
value: 'Pets I once had'
},
{
path: ['petList', 2, 'name'],
value: 'Pets my friends have'
}
];
}
}]);
并在浏览器中进行如下路径查询(我使用的是falcor-http-datasource):
model.get('petList[0..2].name');
我得到以下的正确数据:
{
"jsonGraph": {
"petList": {
"0":{"name":"Shows of Artists I've been to before",
"1":{"name":"Shows of artists my friends have been to before",
"2":{"name":"Highly rated artists"}
}
}
}
我的问题是,在服务器上,是否有一种方法可以让我访问 Falcor 响应此获取路由请求而通过网络发送回浏览器的实际结果?
我的用例是想同时登出两条数据:
- 路由通过的路径集。
- Falcor 通过网络发回的 json 结果。
我在想它可能看起来像这样:
var PetsRouterBase = Router.createClass([{
route: 'petList[{integers:indices}].name',
done: function(pathSet, results) {
// Log out the result of the lookup
console.log(pathSet, results);
},
get: function(pathSet) {
return [
{
path: ['petList', 0, 'name'],
value: 'Pets I have now'
},
{
path: ['petList', 1, 'name'],
value: 'Pets I once had'
},
{
path: ['petList', 2, 'name'],
value: 'Pets my friends have'
}
];
}
}]);
澄清一下。我知道我可以在客户端中获得结果,但我想将它们通过管道传输到服务器上的其他地方。
目前最简单的事情就是在将路由器发送到 express 中间件之前装饰路由器。
app.use('/model.json', FalcorServer.dataSourceRoute(function(req, res) {
return {
get: function(pathSets) {
// print incoming paths to console
console.log(JSON.stringify(pathSets, null, 4));
return router.
get(pathSets).
// print the results to the console
doAction(function(output) {
console.log(JSON.stringify(output, null, 4));
});
}
};
})
假设服务器上有以下路由器 class 运行:
var PetsRouterBase = Router.createClass([{
route: 'petList[{integers:indices}].name',
get: function(pathSet) {
return [
{
path: ['petList', 0, 'name'],
value: 'Pets I have now'
},
{
path: ['petList', 1, 'name'],
value: 'Pets I once had'
},
{
path: ['petList', 2, 'name'],
value: 'Pets my friends have'
}
];
}
}]);
并在浏览器中进行如下路径查询(我使用的是falcor-http-datasource):
model.get('petList[0..2].name');
我得到以下的正确数据:
{
"jsonGraph": {
"petList": {
"0":{"name":"Shows of Artists I've been to before",
"1":{"name":"Shows of artists my friends have been to before",
"2":{"name":"Highly rated artists"}
}
}
}
我的问题是,在服务器上,是否有一种方法可以让我访问 Falcor 响应此获取路由请求而通过网络发送回浏览器的实际结果?
我的用例是想同时登出两条数据:
- 路由通过的路径集。
- Falcor 通过网络发回的 json 结果。
我在想它可能看起来像这样:
var PetsRouterBase = Router.createClass([{
route: 'petList[{integers:indices}].name',
done: function(pathSet, results) {
// Log out the result of the lookup
console.log(pathSet, results);
},
get: function(pathSet) {
return [
{
path: ['petList', 0, 'name'],
value: 'Pets I have now'
},
{
path: ['petList', 1, 'name'],
value: 'Pets I once had'
},
{
path: ['petList', 2, 'name'],
value: 'Pets my friends have'
}
];
}
}]);
澄清一下。我知道我可以在客户端中获得结果,但我想将它们通过管道传输到服务器上的其他地方。
目前最简单的事情就是在将路由器发送到 express 中间件之前装饰路由器。
app.use('/model.json', FalcorServer.dataSourceRoute(function(req, res) {
return {
get: function(pathSets) {
// print incoming paths to console
console.log(JSON.stringify(pathSets, null, 4));
return router.
get(pathSets).
// print the results to the console
doAction(function(output) {
console.log(JSON.stringify(output, null, 4));
});
}
};
})