Промежуточное ПО, специфичное для маршрута 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?

Мой вариант использования заключается в том, что я хочу выйти из двух частей данных вместе:

  1. PathSet, который проходит маршрут.
  2. Результат 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));    
                    });
        }
    };
})
Другие вопросы по тегам