Javascript 创建推入式firebase的阵列类型

Javascript 创建推入式firebase的阵列类型,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在尝试在firebase中创建此结构: inMinistries --uidOfGroup1 ----0: uidOfGroup1Member ----1: uidOfGroup1Member ----2: uidOfGroup1Member --uidOfGroup2 ----0: uidOfGroup2Member ----1: uidOfGroup2Member 在上面的例子中,indeparties是第一个节点,然后我们有uidofGroup1,它将是一个组的uid,然后我希望子节

我正在尝试在firebase中创建此结构:

inMinistries
--uidOfGroup1
----0: uidOfGroup1Member
----1: uidOfGroup1Member
----2: uidOfGroup1Member
--uidOfGroup2
----0: uidOfGroup2Member
----1: uidOfGroup2Member
在上面的例子中,indeparties是第一个节点,然后我们有uidofGroup1,它将是一个组的uid,然后我希望子节点看起来像uidOfGroup1Member。有几个,所以我不能确切地说我需要多少

以下是我尝试创建上述内容:

class Firebase {
  constructor() {
    app.initializeApp(firebaseConfig);

    this.auth = app.auth();
    this.db = app.database();
    this.storage = app.storage();
  }
这就是我设置uidOfGroups的方式

this.db.ref(`inMinistries/${uidOfGroup}`).set('members')
我传递从另一个呼叫接收的uid值。我设置了“members”,以便以后可以用一组成员替换它

然后我尝试创建uidofgroup1成员,uidofgroup2成员。我被这部分卡住了。如果我这样做:

this.db.ref(`/inMinistries/${uidOfGroup}}`).set(memberId);
我只能传递memberId一次,这意味着我需要拥有uidOfGroupMembers的完整列表,而不是一次拥有全部。我希望能够像在阵列中一样推动它。但如果我真的推:

this.db.ref(`/inMinistries/${uidOfGroup}}`).push(memberId);
然后,它会在值之前添加一个额外的uid,如下所示:


请注意,上述内容实际上是在使用UID。如何实现我放在顶部的原始期望结果?

如果您对如何在特定的
uidOfGroup
下保存不同的
uidSofGroup成员
没有任何限制(特别是不需要使用特定的“索引”(即0、1、2)),您可以使用以下方法:

  var uidOfGroup = 'uidOfGroup1';

  var uidOfGroup1Member = 'uidOfGroup1Member';  //Of course, here you can assign the value you want, e.g. -Lwk98a...
  this.db.ref(`/inMinistries/${uidOfGroup}/${uidOfGroup1Member}`).set(
    uidOfGroup1Member
  );


  var uidOfGroup2Member = 'uidOfGroup2Member';
  this.db.ref(`/inMinistries/${uidOfGroup}/${uidOfGroup2Member}`).set(
    uidOfGroup2Member
  );


push()
set()
方法之间的一个区别是
push()
使用自动生成的唯一键创建一个子位置,这是问题的原因。

您能编辑问题以显示组成此数据库项的整个代码集吗,这不是你期望的那样吗?您在变量
memberId
后面留下了很多未知内容。我们应该能够使用您提供的代码复制您看到的内容。我添加了它,我希望它有帮助,我在其他一些方法中使用了所有这些,但我认为这将传达我正在做的事情@Dougstevenson您的问题来自这样一个事实:这些方法使用自动生成的唯一键创建子位置。您应该使用将在位置本身写入数据的方法。另外,请注意,似乎您将一个包含一个元素的数组传递给了
push()
方法,因为您得到了
-0:“-Lwk98aSO7iFTu0qNFJD”
。您可以只传递
-Lwk98aSO7iFTu0qNFJD
字符串。但是如果我使用set,那么数据将始终覆盖最后一个字符串。这就是为什么我尝试使用push@Renaudtarnec您需要提供更多信息,以便我们帮助您(这就是为什么您的问题为什么关闭BTW)。目前,
LxnUH8J0gbATDKycZYN
节点下只有一个值,因此使用
set()
似乎不成问题(因为您只能覆盖它!)。如果您的问题更广泛,请提出一个新问题,并提供所有详细信息。如果我想在示例中的UIDOF组中保留以前的数据,我今天运行一个集合,明天需要设置新数据。我是否会引用数据,复制它,然后重新运行集合@Renaud TamecNo,这是示例显示的:我们首先编写
uidOfGroup1Member
,然后再编写
uidOfGroup2Member
。这两个值(即两个节点)位于末尾的
UidOfGroup
下。