【问题标题】:Can i use DateTime.now().toString() as a child in Firebase with Flutter我可以在 Firebase 中使用 DateTime.now().toString() 作为 Flutter 的孩子吗
【发布时间】:2021-04-03 05:19:05
【问题描述】:

我试图通过将唯一 ID 设为当前日期来使每个订单都独一无二。由于用户可以多次选择同一个服务,我希望将重复的订单作为不同的订单写入数据库。

我无法强文本将孩子设为当前日期。问题是什么? 请帮帮我。

onPressed: () {
final User _firebaseUser = firebaseAuth.currentUser;
    databaseReference
        .child("users")
        .child(_firebaseUser.uid)
        .child("orders")
        .child(DateTime.now().toString())
        .set({
          "service_type" : widget.serviceType.trim(),
          "service_price" : widget.servicePrice,
          "first_name" : firstNameController.text.trim(),
          "last_name" : lastNameController.text.trim(),
          "phone" : phoneController.text.trim(),
          "county" : countyNameController.text.trim(),
          "sub_county" : subCountyNameController.text.trim(),
          "exact_location" : _currentLocation.trim(),
        });
    showInSnackBar('Your order will be added in less thhan 1 hour');
    Navigator.push(context, MaterialPageRoute(builder: (context) => HomeScreen()),);
  },
                   

【问题讨论】:

  • 您希望它有什么不同?您是否尝试记录 DateTime.now().toString() 的值?
  • print(DateTime.now().toString()); 结果是[ ] I/flutter ( 6303): 2020-12-25 01:41:49.539140
  • 当然,firebase 有一个“在这里,保留这个,并给它一个唯一的 ID”操作。 DateTime 绝对不能保证是唯一的。编辑:是的,确实如此:stackoverflow.com/questions/28822054/…
  • 如果你想要一个按时间排序的密钥,你真的应该使用push() 来生成它。然后,您可以根据需要将日期值存储在子值中。

标签: firebase flutter dart firebase-realtime-database


【解决方案1】:

我宁愿说您使用.toDate() method 将时间戳转换为日期。

【讨论】:

    【解决方案2】:

    我只是通过更改此代码找到了答案

    .child(
        "${DateTime.now().day}" + 
        "${DateTime.now().month}" + 
        "${DateTime.now().year}" + 
        "${DateTime.now().timeZoneName}" + 
        "${DateTime.now().hashCode}"
      )
    

    唯一标识一个订单

    【讨论】:

    • 这不是真的。 Firebase 确实允许键名中有空格。 documentation 将告诉您哪些字符无效:“$、#、[、]、/ 或 ASCII 控制字符 0-31 或 127。您也不能在值本身中使用 ASCII 控制字符。”如果你违反了这一点,写操作也会产生一个错误,告诉你这一点。
    • 如果您认为文档有误,请向 Firebase 支持提交错误并附上您的具体发现。您应该使用硬编码字符串提供示例代码,清楚地说明问题。 support.google.com/firebase/contact/support
    • 我不确定我的代码有什么问题,为什么它给了我一个错误,但在我更改代码后它对我有用,所以我只是与其他编码人员共享
    • 我明白,我说这不是因为你在答案中所说的空格。
    猜你喜欢
    • 2022-01-05
    • 2021-07-03
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2017-07-17
    • 2016-11-05
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多