如何在Flutter中的Firestore中向数组添加相等的元素?

时间:2019-08-09 04:02:27

标签: arrays firebase firebase-realtime-database flutter google-cloud-firestore

我刚刚在Flutter中发现了这一点

List<int> values = [1,2,3,1,2,3];
Firestore.instance.path.updateData({"values": FieldValue.arrayUnion(values)});

导致Firestore阵列

(Firestore Array) [1,2,3]

显然,虽然我可以在Firebase面板中在线手动添加重复值(数据类型分别称为数组),但这些值已经以某种方式映射,删除了重复值。

有没有办法绕过这种行为,或者这是一个错误吗?

2 个答案:

答案 0 :(得分:1)

根据the documentation here,数组并集将仅添加不存在的元素。因为您使用的Firestore函数仅旨在添加新的唯一值,所以它将以这种方式运行而不会被绕过。不过,您当然可以绕过此功能,但必须先调用文档,检索数组并在将其更新到Firestore之前附加它,然后才能这样做。

答案 1 :(得分:0)

使用

class _UpdateScreenState extends State<UpdateScreen> {

  TextEditingController _txtnrp;

  @override
  void initState() {
     _txtnrp = TextEditingController(text: "${widget.nrpUpdate}");
     super.initState();
  }

它可以不使用 FieldValue.arrayUnion

而工作