Firebase 如何将数组项添加到文档Firestore Flatter

Firebase 如何将数组项添加到文档Firestore Flatter,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我想在我的文档中添加(或首先创建)一个这样的映射数组: videos - 0 - url : myurl - 1 - url : another one 通过控制台我可以做到这一点,但我不知道如何在代码中做到这一点。这是我当前的设置方法: wait databaseReference.collection(“${mycl}”).doc(“${mydoc}”) .设置({ “url”:url, }); 这将向数据库中添加一个简单的字符串。如何在我前面提到的结构中添加一个项目 更新

我想在我的文档中添加(或首先创建)一个这样的映射数组:

videos
 - 0
  - url : myurl
 - 1
  - url : another one
通过控制台我可以做到这一点,但我不知道如何在代码中做到这一点。这是我当前的设置方法:

wait databaseReference.collection(“${mycl}”).doc(“${mydoc}”)
.设置({
“url”:url,
});
这将向数据库中添加一个简单的字符串。如何在我前面提到的结构中添加一个项目

更新

如果我有这个:

videos
 - 0
  - url : myurl
  - name : myname
 - 1
  - url : another one
  - name : myname
您可以通过以下方式添加阵列:-

List<Map> videos=[
    {
      'url':'url',
      'name':'Harry',
    },
    {
      'url':'url',
      'name':'John',
    }
  ];
    await databaseReference.collection("${mycol}").doc("${mydoc}")
            .set({
              'url': FieldValue.arrayUnion([videos]),
            });
列出视频=[
{
“url”:“url”,
“名字”:“哈利”,
},
{
“url”:“url”,
“姓名”:“约翰”,
}
];
等待databaseReference.collection(“${mycol}”).doc(“${mydoc}”)
.设置({
“url”:FieldValue.arrayUnion([视频]),
});
现在,如果您已经添加了3个元素,并且将来要添加第4个元素,那么:-

List<Map> new=[
{
'url':'url for 4th video',
'name':'4th person name',
},
];
await databaseReference.collection("${mycol}").doc("${mydoc}")
                .update({
                  'url': FieldValue.arrayUnion([videos]),
                });
列出新的=[
{
“url”:“第四个视频的url”,
“姓名”:“第四人名”,
},
];
等待databaseReference.collection(“${mycol}”).doc(“${mydoc}”)
.更新({
“url”:FieldValue.arrayUnion([视频]),
});
FielValue.arrayUnion的用途是自动将新数据添加到firebase,即现在数组中有4个元素(3个以前添加,1个最近添加)。

您可以通过以下方式添加数组:-

List<Map> videos=[
    {
      'url':'url',
      'name':'Harry',
    },
    {
      'url':'url',
      'name':'John',
    }
  ];
    await databaseReference.collection("${mycol}").doc("${mydoc}")
            .set({
              'url': FieldValue.arrayUnion([videos]),
            });
列出视频=[
{
“url”:“url”,
“名字”:“哈利”,
},
{
“url”:“url”,
“姓名”:“约翰”,
}
];
等待databaseReference.collection(“${mycol}”).doc(“${mydoc}”)
.设置({
“url”:FieldValue.arrayUnion([视频]),
});
现在,如果您已经添加了3个元素,并且将来要添加第4个元素,那么:-

List<Map> new=[
{
'url':'url for 4th video',
'name':'4th person name',
},
];
await databaseReference.collection("${mycol}").doc("${mydoc}")
                .update({
                  'url': FieldValue.arrayUnion([videos]),
                });
列出新的=[
{
“url”:“第四个视频的url”,
“姓名”:“第四人名”,
},
];
等待databaseReference.collection(“${mycol}”).doc(“${mydoc}”)
.更新({
“url”:FieldValue.arrayUnion([视频]),
});

FielValue.arrayUnion的目的是自动将新数据添加到firebase,即现在数组中有4个元素(3个以前添加,1个最近添加)。

您可以用与现在类似的方式执行此操作。例如:

await _firestore.collection(mycol).document(mydoc)
  .setData({
    'videos': arrayOfUrls,
    // OR
    'videos': mapOfUrls
  });

Firebase支持开箱即用的阵列和地图

你可以用与你现在做的类似的方式来做这件事。例如:

await _firestore.collection(mycol).document(mydoc)
  .setData({
    'videos': arrayOfUrls,
    // OR
    'videos': mapOfUrls
  });

Firebase支持开箱即用的阵列和地图

查看我的更新,请更新我希望它有帮助,如果是,我请求您接受它作为答复,但在这种情况下,我在那里设置了内容。。我可以“合并”它吗?例如,如果有3项,我想添加第四项。。你明白我的意思吗?等待更新答案。是否自动检查是否有元素(如果是,则更新,如果未设置)?请查看我的更新,更新我希望它有帮助,如果是,我请求你接受它作为答案,但在这种情况下,我在那里设置了内容。。我可以“合并”它吗?例如,如果有3项,我想添加第四项。。你明白了吗?请等待更新答案。是否自动检查是否有元素(如果是,则更新,如果未设置)?