如何在本地 falcor 模型数据集上实现突变响应

Posted

技术标签:

【中文标题】如何在本地 falcor 模型数据集上实现突变响应【英文标题】:how to implement mutation responses on a local falcor Model dataset 【发布时间】:2016-01-22 06:19:21 【问题描述】:

鉴于我有一个示例模型:

var model = new falcor.Model(
  cache: 
    userById: 
      "1": 
        name: "User",
        email: "user@email.com"
      
    ,

    users: 
      current: null
    
  
);

这是我用于测试目的的本地模型,我想在调用 users.login 时实现它,以便用户调用:

model.call(['users', 'login'], ['user', 'password'])

我意识到如果我这样做:

var model = new falcor.Model(
  cache: 
    userById: 
      "1": 
        name: "User",
        email: "user@email.com"
      
    ,

    users: 
      current: null,
      login: function(user, password) 
        console.log('this code is reached', user, password);

        // what to return in order to mutate model?
      
    ,
  
);

当我调用它时,它会到达那里,但我不知道如何改变模型作为响应的一部分;在服务器端,我们返回带有值和无效的路径,它可以正常工作,但在这里我尝试了:

// trying returning as a jsonGraph response, don't work
login: function() 
  return 
    jsonGraph: 
      users: 
        current: $type: "ref", value: ['userById', '1']
      
    ,
    paths: [['users', 'current']]
  


// trying returning as a path set mutation list, don't work
login: function() 
  return [path: ['users', 'current'], value: $type: "ref", value: ['userById', '1']]


// trying force call to set on the model, don't work
login: function() 
  this.set([
    path: ['users', 'current'], value: $type: "ref", value: ['userById', '1']
  ])


// trying using ModelResponse, got an example on some external sources, don't work
login: funtion() 
  return new ModelResponse((observer) => 
    observer.onNext(
      jsonGraph: 
        users: 
          current: $type: "ref", value: ['userById', '1']
        
      ,
      paths: [['users', 'current']]
    );

    observer.onCompleted();
  );

现在我不知道还能尝试什么;我需要一种简单的方法来在调用本地模型后声明突变,如果你知道如何解决这个问题,请在这里告诉我。

谢谢。

【问题讨论】:

【参考方案1】:

客户端模型缓存仅支持JSONGraph,它本质上只是带有一些约定的JSON,不支持函数。因此,当使用 falcor 模型缓存且没有数据源/中间层路由器时,无法实现调用。

这在原型设计/测试时可能有点烦人,因为路由器在概念上比简单的 JSON 缓存对象更难。我前段时间遇到了这个问题,所以我写了一个数据源模块来支持它:falcor-local-datasource。 dataSource 使用 确实 支持函数节点的图形对象进行初始化,并且与上面的示例一样,将根据函数返回的 JSONGraphEnvelope 或 PathValues 的数组来改变图形。 p>

【讨论】:

以上是关于如何在本地 falcor 模型数据集上实现突变响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在列子集上实现 PySpark StandardScaler?

在PaddlePaddle上实现MNIST手写体数字识别

如何在 Cassandra 节点上实现数据本地化

具有来自外部 Api 的缓存数据的 Falcor 模型

教程 | 使用MNIST数据集,在TensorFlow上实现基础LSTM网络

使用DOTA数据集训练Faster R-CNN模型