Firebase 允许您拥有验证规则,以确保任何给定节点都存在特定的子节点。例如:
{
"rules" : {
"posts" : {
"$postsID" : {
".validate" : "newData.hasChildren(['title','body','authors'])",
...
上面,如果我们尝试在 /posts/ 创建一个节点而不给它标题、正文或作者,Firebase 将拒绝我们的请求。
但是,EmberFire适配器中的 updateRecord 函数使用单独的 Promise 来保存关系和模型本身。
因此,在上面的示例中,当我们保存新帖子时,EmberFire可能会在写入 /posts//title 和 /posts//body 之前尝试写入 /posts//authors/。在这种情况下,我们的验证规则将失败。
有几个解决方案浮现在脑海
修补 ember fire 适配器以使用单个请求而不是使用多个请求将所有更新写入节点。
修补适配器以使用事务,然后我们可以使用验证。
我想知道是否有其他不涉及修补适配器的解决方案
PS - 这也发布在 Firebase 的 github 问题上 - https://github.com/firebase/emberfire/issues/304