如何仅一次将Flutter Firebase中的文档从一个集合复制到另一个集合

时间:2020-04-28 09:20:33

标签: firebase flutter google-cloud-firestore

我想从Firebase的子集合中获取特定数据,并将其仅复制一次(这样就没有流)到另一个集合。如何修复代码以使其正常工作?可能我需要使用getDocuments()进行一些更改,但是我不知道如何进行这项工作。谢谢你的帮助。

<div class="container">
  <header>
    <nav>
      <p>1</p>
      <p>2</p>
      <p>3</p>
    </nav>
  </header>
  <div class="square"></div>
</div>

1 个答案:

答案 0 :(得分:1)

好吧,经过大量的研究和反复试验后,我终于有了一个可行的解决方案。我希望我可以通过以下解决方案帮助遇到相同问题的人:

void copy() async {
QuerySnapshot snaphsot = await _firestore
    .collection('users')
    .document(loggedinUser.uid)
    .collection('Dates')
    .document(yesterdayDate)
    .collection(widget.reference)
    .getDocuments();

for (var message in snaphsot.documents) {
  final getitem = message.data['item'];
  final getarchieved = message.data['archived'];
  final getchecked = message.data['checked'];

  if (getchecked == false && widget.reference == 'Todo') {
    _firestore
        .collection('users')
        .document(loggedinUser.uid)
        .collection('Dates')
        .document(selectedDate)
        .collection(widget.reference)
        .add({
      'item': getitem,
      'archived': getarchieved,
      'checked': getchecked
    });
  } else if (widget.reference == 'Goals') {
    _firestore
        .collection('users')
        .document(loggedinUser.uid)
        .collection('Dates')
        .document(selectedDate)
        .collection(widget.reference)
        .add({'item': getitem, 'archived': getarchieved, 'checked': false});
  }
 }
}