【问题标题】:How can I Store Document in chronological order in firebase with fluttter如何在颤动的firebase中按时间顺序存储文档
【发布时间】:2021-11-29 05:49:51
【问题描述】:

我正在编写一个预约应用程序,我想将自己创建的文档存储在 Firestore 数据库中,但按时间顺序排列。这样我就可以看到我最近的预约。有什么办法可以做到这一点?我附上了用于在 firebase 中存储数据的代码。请建议对此代码进行一些修改。

Future<void> userSetup() async {
    String user = FirebaseAuth.instance.currentUser?.displayName as String;
    DocumentReference<Map<String, dynamic>> users =
        FirebaseFirestore.instance.collection(user).doc();
    
    final hours = time?.hour.toString().padLeft(2, '0');
    final minutes = time?.minute.toString().padLeft(2, '0');
    users.set({
      "customerId": FirebaseAuth.instance.currentUser?.uid.toString(),
      "customerName": FirebaseAuth.instance.currentUser?.displayName,
      "customerEmail": FirebaseAuth.instance.currentUser?.email,
      "selectedTime": '${hours}:${minutes}',
      "selectedDate": DateFormat('dd/MM/yyyy').format(date!),
    });
    return;
  }

【问题讨论】:

  • 为什么要将日期和时间保存在 2 个不同的字段中,而不是一个。因为这样你就可以通过使用orderBy() time 来检索它。
  • 当然会这样做,但我想按时间顺序存储数据,因为随机生成的文档 ID 不是按时间顺序排列的。有什么办法吗
  • 如何将文档 ID 命名为 appointmentTime.millisecondsSinceEoch。 ?然后它将按时间顺序保存。我按时间顺序使用相同的顺序聊天消息。
  • 是的,我只这样做了,它奏效了。
  • 我认为你应该在 chronological order 中查询而不介意存储,只要你有一个时间戳/时间来订购

标签: flutter dart google-cloud-firestore


【解决方案1】:

修复了仅使用时间戳作为文档名称的问题。我将此行添加到我的代码中

String docId = (DateTime.now().millisecondsSinceEpoch).toString();

最后,完整的代码是:

Future<void> userSetup() async {
    String user = FirebaseAuth.instance.currentUser?.displayName as String;
    String docId = (DateTime.now().millisecondsSinceEpoch).toString();
    DocumentReference<Map<String, dynamic>> users =
        FirebaseFirestore.instance.collection(user).doc(docId);

    final hours = time?.hour.toString().padLeft(2, '0');
    final minutes = time?.minute.toString().padLeft(2, '0');
    users.set({
      "customerId": FirebaseAuth.instance.currentUser?.uid.toString(),
      "customerName": FirebaseAuth.instance.currentUser?.displayName,
      "customerEmail": FirebaseAuth.instance.currentUser?.email,
      "selectedTime": '${hours}:${minutes}',
      "selectedDate": DateFormat('dd/MM/yyyy').format(date!),
    });
    return;
  }

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 2020-02-03
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 2020-06-24
    • 2020-02-17
    • 2022-06-28
    相关资源
    最近更新 更多