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



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

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

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

然而,EmberFire适配器中的updateRecord函数使用单独的承诺来保存关系和模型本身。

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

我想到了几个解决方案

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

  2. 给适配器打补丁,让它使用事务,然后我们就可以使用验证了。

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

PS -这是张贴在github问题为Firebase - https://github.com/firebase/emberfire/issues/304

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

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

最新更新