Falcor - 发布Json的HTTPDataSource

时间:2017-08-23 10:50:59

标签: falcor falcor-router

是否可以使用falcor.browser的模型发布Json文件?我在其中使用了get方法。以下是我的要求,但它不起作用。

<script src="./js/falcor.browser.js"></script>
function registerUser() {
  var dataSource = new falcor.HttpDataSource("http://localhost/registerUser.json");
  var model = new falcor.Model({
      source: dataSource
  });

var userJson = {"name":"John","age":"35","email":"john@abc.com"};

model.
 set(userJson).
 then(function(done){
   console.log(done);
 });

这是server.js代码:

app.use('/registerUser.json', falcorExpress.dataSourceRoute(function (req, res) {
  return new Router([
    {
      route: "rating",
      get: function() {
           // Post call to external Api goes here
      }
    }
  ]);
}));

1 个答案:

答案 0 :(得分:0)

一些事情:

模型的set()方法需要1 + pathValues,因此将request.GET.get('redirect_uri')对象文字重新格式化为一组pathValues。类似的东西:

userJson

其次,您的路由器必须实现set handlers以对应您尝试设置的路径。这些处理程序还应该返回pathValues:

model.
 set(
   { path: ['users', 'id1', 'name'], value: 'John' },
   { path: ['users', 'id1', 'age'], value: 35 },
   { path: ['users', 'id1', 'email'], value: 'john@abc.com' }
 ).
 then(function(done){
   console.log(done);
 });

鉴于您的数据库请求可能是异步的,您的路由获取处理程序将必须返回promise或observable。但上述内容应作为示范。

修改

如果字段数量变大,您还可以在第三个路径密钥上使用route pattern matching,如上面第二个id密钥所示。

  new Router([
    {
      route: 'users[{keys:ids}]["name", "age", "email"]',
      set: function(jsonGraph) {
          // jsonGraph looks like { users: { id1: { name: "John", age: 35, email: "john@abc.com" }
          // make request to update name/age/email fields and return updated pathValues, e.g.
          return [
              { path: ['users', 'id1', 'name'], value: 'John' },
              { path: ['users', 'id1', 'age'], value: 35 },
              { path: ['users', 'id1', 'email'], value: 'john@abc.com' },
          ];
      }
    }
  ]);