Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将对象添加到firestore对象数组的第一个索引_Javascript_Arrays_Reactjs_React Native_Google Cloud Firestore - Fatal编程技术网

Javascript 如何将对象添加到firestore对象数组的第一个索引

Javascript 如何将对象添加到firestore对象数组的第一个索引,javascript,arrays,reactjs,react-native,google-cloud-firestore,Javascript,Arrays,Reactjs,React Native,Google Cloud Firestore,我一直在谷歌上搜索如何将对象添加到firestore的数组中,发现arrayUnion可以将对象添加到firestore数组中,但它只将对象添加到数组的最后一个索引中,但如何将其添加到数组的第一个索引中 //add "greater_virginia" into last index of array washingtonRef.update({ regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia") }

我一直在谷歌上搜索如何将对象添加到firestore的数组中,发现arrayUnion可以将对象添加到firestore数组中,但它只将对象添加到数组的最后一个索引中,但如何将其添加到数组的第一个索引中

//add "greater_virginia" into last index of array
washingtonRef.update({
    regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia")
});

//how to add "greater_virginia" into first index of array?

它与arrayUnion基本相同,但我不想将其添加到最后一个索引中,而是想将其添加到数组的第一个索引中。

如果Firestore数组的行为类似于实时数据库数组,那么它们实际上并不存在。据我所知,它们存储为地图,如:

{
  0: "first element",
  2: "second and so on",
}
您可能会看到取消转换将是一个巨大的转变。事实上,firestore不允许您这样做,它说……为了避免在多用户环境中可能出现的一些问题,您将为它们添加更多类似集合的功能

考虑到这一点,这个问题通常在应用程序级别解决,方法是获取数组,根据需要对其进行变异,然后设置整个内容

进一步阅读


PS:小心使用arrayUnion操作符,因为它实际上执行添加到集合

如果Firestore数组的行为类似于实时数据库数组,那么它们实际上并不存在。据我所知,它们存储为地图,如:

{
  0: "first element",
  2: "second and so on",
}
您可能会看到取消转换将是一个巨大的转变。事实上,firestore不允许您这样做,它说……为了避免在多用户环境中可能出现的一些问题,您将为它们添加更多类似集合的功能

考虑到这一点,这个问题通常在应用程序级别解决,方法是获取数组,根据需要对其进行变异,然后设置整个内容

进一步阅读


PS:小心使用arrayUnion操作符,因为它实际上执行了一个add to set

Firestore并没有提供任何方法来按索引修改数组字段的项。arrayUnion仅在元素不存在时才会附加到数组的末尾


如果要按索引修改数组,则必须读取文档,修改内存中的数组以显示所需的方式,然后将修改后的数组写回文档。

Firestore不提供任何按索引修改数组字段项的方法。arrayUnion仅在元素不存在时才会附加到数组的末尾


如果要按索引修改数组,则必须读取文档,修改内存中的数组以显示所需的方式,然后将修改后的数组写回文档。

Firestore数组字段确实存在。它们有自己的专用字段类型,与地图不同。它一点也不像Realitme数据库。谢谢你的回答非常清楚的回答,你知道我可以用什么语法手动获取它,取消移动它,然后将它推入firestore吗?也许我可以对它做更多的研究谢谢DougStevenson的澄清。至于如何从数据库中获取和设置数据,您必须从概念上阅读文档的开头,尽管它类似于doc=get doc from collection;newArray=[newElement,…doc.arrayField];在单据的arrayField上设置newArray;Firestore数组字段确实存在。它们有自己的专用字段类型,与地图不同。它一点也不像Realitme数据库。谢谢你的回答非常清楚的回答,你知道我可以用什么语法手动获取它,取消移动它,然后将它推入firestore吗?也许我可以对它做更多的研究谢谢DougStevenson的澄清。至于如何从数据库中获取和设置数据,您必须从概念上阅读文档的开头,尽管它类似于doc=get doc from collection;newArray=[newElement,…doc.arrayField];在单据的arrayField上设置newArray;注意:与arrayUnion不同,此操作将失败atomicity@AlbertRenshaw您可以为此使用事务处理。注意:与arrayUnion不同,此操作将失败atomicity@AlbertRenshaw您可以使用事务来实现这一点。