Ajax post不会在Firebase DB中递增索引值

时间:2018-05-04 09:14:16

标签: json ajax firebase firebase-realtime-database

我正在使用ajax帖子将新的数组信息添加到我在Firebase中已经存在的json对象中,帖子一切正常,但它没有增加索引值,它只是使用了一组随机的字符我可以看到。

为什么要这样做?如何将其更改为从之前的索引值开始?

我的邮政编码......

$.ajax({
  type: 'POST',
  url: "blahblahblah.json",
  data: JSON.stringify({
      FIELD2: $('#title').val(),
      FIELD3: $('#author').val(),
  }),
  error: function(e) {
    console.log('%c Epic Fail', 'color: #fff; font-weight: bold;background:red;padding:20px;');
  },
  success: function(data){   // A function to be called if request succeeds
    console.log('%c Hazaaaa', 'color: #fff; font-weight: bold;background:lime;padding:20px;');
  },
  dataType: "json",
  contentType: "application/json"
});

这就是我的json如何看待新信息的更新。

84:{FIELD1: "6656640", FIELD10: "The Folio Society", FIELD11: "Hardcover", FIELD12: "304", FIELD13: "2005", …}
85:{FIELD1: "168668", FIELD10: "Simon & Schuster ", FIELD11: "Paperback", FIELD12: "453", FIELD13: "2004", …}
86:{FIELD1: "100915", FIELD10: "HarperCollins Publishers", FIELD11: "Paperback", FIELD12: "206", FIELD13: "2005", …}
-LBaSxkTucRyHqfqEdDI:{FIELD2: "TEST TITLE", FIELD3: "TEST AUTHOR"}
-LBaXDRfe3tjZEBoJwHy:{FIELD2: "dave", FIELD3: "smith"}

1 个答案:

答案 0 :(得分:1)

Firebase数据库建议不要使用序号进行索引。要详细了解原因,请参阅Best Practices: Arrays in Firebase

当您向Firebase数据库REST API发送POST谓词时,它会创建一个新的子节点,其中包含所谓的推送ID作为密钥。这些是您看到的-LBaSxkTucRyHqfqEdDI之类的值。

Firebase数据库没有内置支持来生成顺序数字索引。如果你坚持使用它们,你将不得不自己动手。这意味着您将有两个选择:

  1. 在客户端中读取整个数组,找到下一个索引,然后将其写回。您希望在事务中执行此操作,以确保用户不会覆盖彼此的更改。
  2. 跟踪您在单独字段中分发的最高索引。然后在客户端中读取该字段,找到下一个索引,然后将其写回。您还希望在事务中执行此操作,但事务只需要应用于计数。
  3. 如果这听起来比您想要的复杂且更复杂:这是Firebase建议不使用数字顺序索引并且没有内置操作的众多原因之一。