给定以下在服务器上运行的Router类:

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响应此获取路由请求而通过电线发送回浏览器的实际结果?

我的用例是我想一起注销两个数据:


路由通过的pathSet。
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'
      }
    ];
  }
}]);


只是要清楚。我知道我可以在客户端中获得结果,但是我想将它们通过管道发送到服务器上的其他位置。

最佳答案

目前最简单的方法是先装饰路由器,然后再将其发送到快速中间件。

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));
                    });
        }
    };
})

07-28 09:03