可以在firebase数据库数组中拼接项目吗?

时间:2017-08-05 16:42:35

标签: firebase firebase-realtime-database

我的firebase数据库结构如下:

enter image description here

我想删除类别1,但当我向*.firebaseio.com/categories/1.json发送DELETE请求时,我得到:

enter image description here

我想更改数组中的其余索引以获取没有空项的数组。 删除categories[1]后可以获得这样的新数组吗?:

enter image description here

2 个答案:

答案 0 :(得分:1)

在这种情况下,你应该将你的项目推送到firebase,firebase将在时间戳之后分配一个唯一的id

来自指南:

获取push()生成的唯一ID

调用push()将返回对新数据路径的引用,您可以使用该路径获取其ID的值或将数据设置到该数据路径。以下代码将生成与上述示例相同的数据,但现在我们可以访问生成的唯一推送ID

// Generate a reference to a new location and add some        data using push()
var newPostRef = postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
   // Get the unique ID generated by push() by accessing its key
var postID = newPostRef.key;

来源:https://www.firebase.com/docs/web/guide/saving-data.html

答案 1 :(得分:1)

Firebase本身不存储数组。如您所见,它将数据存储在具有“顺序数字”索引的常规JSON对象中。从该JSON对象中删除项目时,其他索引不会自动更新。

这里有两个选项:

  1. 始终更新整个阵列。
  2. 使用Firebase推送ID进行收集。
  3. Firebase推送ID是Firebase的等价订单集合。虽然它们不像顺序数字索引那样容易阅读,但它们有几个重要的优点。您可以在this blog post about arrays和此博文中了解有关推送ID的更多信息。

    要通过REST API生成推送ID,请使用POST请求添加每个项目。