Firebase Ember fire适配器在父子关系的验证规则中失败

时间:2015-08-12 17:06:28

标签: ember.js firebase emberfire

Firebase允许您拥有验证规则,确保任何给定节点都存在特定子节点。例如:

{
  "rules" : {
    "posts" : {
      "$postsID" : {
        ".validate" : "newData.hasChildren(['title','body','authors'])",
        ...

上面,如果我们尝试在/ posts /创建一个节点而不给它一个标题,正文或作者,Firebase将拒绝我们的请求。

但是,EmberFire适配器中的updateRecord函数使用单独的promise来保存关系和模型本身。

因此,在上面的示例中,当我们保存新帖子时,EmberFire可能会在写入/发布// title和/ posts // body之前尝试写入/发布// authors /。在这种情况下,我们的验证规则将失败。

有几种解决方案可以想到

  1. 修补ember fire适配器,使用单个请求将所有更新写入节点,而不是使用多个请求。

  2. 修补适配器以使用transactions,然后我们就可以使用验证。

  3. 我想知道是否有任何其他解决方案不涉及修补适配器

    PS - 这也发布在Firebase的github问题上 - https://github.com/firebase/emberfire/issues/304

1 个答案:

答案 0 :(得分:0)

不幸的是你是对的。目前,hasMany关系链接保存在一系列单独的服务器请求中。这将导致需要至少有一个hasMany链接的安全规则出现问题。

让我们继续在GitHub issue中讨论这个问题。我们可能会改变适配器的行为。