【发布时间】:2018-02-10 00:48:20
【问题描述】:
我正在使用 Angular 构建一个 Ionic 应用程序,该应用程序使用 Firebase 作为身份验证/数据库。
在我的应用上,用户可以创建不同的事物或对象。然后我将这些对象放入一个数组中。所以我最终得到了一个对象数组。用户可以删除该本地列表中的内容、更改内容或添加新内容。
我想要的是能够在 Firebase 中获取(我成功存储的)对象,并将其设置回对象。我是 Firebase 的新手,它是 api,所以我有点卡住了。这是我从 Firebase 检索对象的代码:
fetchList() {
const user = this.authService.getActiveUser();
if (user != null) {
return firebase.database().ref(user.uid + '/lists').once('value')
.then( snapshot => {
return snapshot.val();
})
.catch( err => {
return err;
});
}
}
我已经阅读了所有 Firebase 文档,但我无法弄清楚 snapshot.val() 返回的内容。它是返回一个对象还是什么。如果是这样,我是否必须解析对象以重建我的本地对象数组?
这是 Firebase 中某些数据的示例结构。 0 是数组索引。我基本上只是传入我的对象数组,Firebase 就这样存储它。现在我想检索它并将其设置为等于我的本地对象数组,这样用户就可以拥有
+ Sidfnh450dfFHdh989490hdfh
- DFjghd904hgGHdhfs9845hfh0
- lists
- 0
hasProperty1: false
isProperty2: false
otherProperty: 'string stuff here'
title: 'List Title'
+ 1
+ 2
或者,也许我做错了。也许存在一种类似于双向数据绑定的神奇 Firebase 方法,无论我在本地对象数组上所做的任何更改都会反映 Firebase,反之亦然。任何建议表示赞赏。
编辑
此外,我在本地做的事情是对数组进行重新排序。我的应用程序是某种列表,用户可以重新排序列表中的对象。因此,如果我确实有一个与 Firebase 同步的列表,并且有人重新排序了列表中的一些对象,我不确定如何在 Firebase 中重新排序它们而不删除整个对象数组并编写一个新的一个具有更新的数组索引。
【问题讨论】:
-
肯尼你使用的是 Angular 2/4 还是 AngularJS?如果 Angular2/4 则查看
angularfire2NPM 包。它使集成到 Firebase 变得更加容易。 -
您获得了 3 路数据绑定,因此您无需在本地存储数组 - 这一切都与 firebase 数据库同步。 github.com/angular/angularfire2
-
好吧,我在本地做的一些事情我认为我不能用 angularfire2 或 firebase 做,那就是重新排序一个数组。我可能会从中间取出一些东西,然后把它放下几个位置。
标签: angularjs firebase ionic-framework firebase-realtime-database