gpt4 book ai didi

Firebase 和 AngularFire - $add 到数组中 - 意外行为

转载 作者:行者123 更新时间:2023-12-02 19:10:34 25 4
gpt4 key购买 nike

dayPath = ref.path.toString() + '/' + configId + '/screens/' + screenIndex + '/days/',
// the ref for the days object
daysRef = fbutil.ref(dayPath),
// the sync for the days object
daysSync = fbutil.syncObjectReference(daysRef);

// the collection as a $firebase array
var list = daysSync.$asArray(),
items = [],
number;
console.log(list);
list.$add({dummy: 'Test'});

根据文档,当我将 $add 与 $asArray 一起使用时,$add 应该执行“推送”。但它创建的是哈希键而不是数字索引。

因此,虚拟:测试有一个包含哈希键的父级。预期是一个数字索引,我的意思是:数组项。

有人可以给我一些帮助吗?我在这个数据库上只有 1 周的经验。

结果就是这个...

 screens
...0
.......days
..........0
..........1
..........2
.........-JrT5ZATDELIR3gXAvah
................dummy: test

最佳答案

AngulareFire 基于 Firebase JavaScript SDK 构建。因此,当 AngularFire 的文档说它在内部使用 push 时,它并不是指 JavaScript 的 Array.push,而是指 Firebase's push operation 。而且 Firebase 的 push 会生成自己的键,它不会生成常规的数组索引。

其原因在 Firebase's documentation on arrays 中得到了最好的解释。 ,但本质上可以归结为:数组在分布式环境中不能很好地工作,因为所有客户端都必须就array.length达成一致才能添加新项目。

因此$firebaseArray.$add将生成一个所谓的推送ID。它们是有序的,就像数组索引一样,但可以跨客户端生成,而不会有冲突的风险。

我注意到您使用的是较旧版本的 AngularFire。强烈建议您关注“官方”quickstart and guide for AngularFire .

关于Firebase 和 AngularFire - $add 到数组中 - 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30761891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com