Промежуточное ПО, специфичное для маршрута Falcor
С учетом следующего класса маршрутизатора, работающего на сервере:
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 передает по проводам обратно в браузер в ответ на этот запрос get route?
Мой вариант использования заключается в том, что я хочу выйти из двух частей данных вместе:
- PathSet, который проходит маршрут.
- Результат JSON, который Falcor отправляет обратно по проводу.
Я думал, что это может выглядеть примерно так:
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'
}
];
}
}]);
Просто быть чистым. Я знаю, что могу получить результаты в клиенте, но я хочу передать их в другом месте на сервере.
1 ответ
Решение
На данный момент проще всего украсить маршрутизатор, прежде чем отправлять его в промежуточное программное обеспечение 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));
});
}
};
})