检查文档是否存在,如果不存在则创建并添加数据Firebase

费德里科·达米尼

如上所述,我需要创建一个函数,如果存在文档,则该函数返回“ true”,否则返回“ false”。如果文档不存在,则需要在函数结束之前创建它。

当我运行它时,我有这个异常:

Unhandled Exception: 'package:cloud_firestore/src/firestore.dart': Failed assertion: line 129 pos 12: 
'isValidDocumentPath(documentPath)': a document path must point to a valid document.

很容易理解,我在获取集合之前没有检查路径是否存在,但是我不知道如何处理它。

这是代码:

Future<bool> checkMissingId(String id) async {
  String str = id.toLowerCase();
  String letter = str[0];

    final snapShot =
        await FirebaseFirestore.instance.collection(letter).doc(str).get();

    if (snapShot == null || !snapShot.exists) {
      //if not exists then create it
      final _service = FirestoreService.instance;
      _service.setData(
        path: letter + str,
        data: {'id': id},
      );
      return true;
    } else // it already exists, return false
      return false;
}

编辑:新代码,但仍然无法正常工作:

Future<bool> checkMissingId(String id) async {
  String str = id.toLowerCase();
  String letter = str[0];
  String path = letter + "/" + str;
  print(path);

  try {
    final snapShot =
        await FirebaseFirestore.instance.collection(path).doc(str).get();

    if (snapShot == null || !snapShot.exists) {
      return true;
    } else
      return false;
  } catch (e) {
    print(e);
    return false;
  }
}

Future<bool> setId(String id) async {
  String str = id.toLowerCase();
  String letter = str[0];
  String path = letter + "/" + str;
  final _service = FirestoreService.instance;

  try {
    final snapShot =
        await FirebaseFirestore.instance.collection(path).doc(str).get();

    if (snapShot == null || !snapShot.exists) {
      _service.setData(
        path: path,
        data: {'id': id},
      );
      return true;
    } else
      return false;
  } catch (e) {
    //print(e);
    _service.setData(
      path: path,
      data: {'id': id},
    );
    return true;
  }
}

假设id = "PaninoAvvelenato":我想检查路径“ p / paninoavvelenato”上是否存在文档,如果不存在,则需要创建它。

罗伯特·桑德伯格

而不是使用FirestoreService。

Future<bool> setId(String id) async {
  String str = id.toLowerCase();
  String letter = str[0];

  try {
    final snapShot = await FirebaseFirestore.instance.collection(letter).doc(str).get();

    if (snapShot.exists) {
      return false;
    } else {
      await FirebaseFirestore.instance.collection(letter).doc(str).set({'id': id});
      return true;
    }
  } catch (e) {
    // TODO: Do something clever.
    return true;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查 firebase 数据库中是否存在一项,如果不存在,则添加新项

检查目录是否存在,如果不存在则创建

检查文件是否存在,如果不存在则创建它

如果不存在,如何在 firebase 中创建集合并向其中添加文档?

VBA检查目录是否存在,如果存在退出子,否则不存在,创建

检查div是否存在-如果不存在-再次检查直到创建

按索引添加数据帧,如果不存在索引则删除

如何检查集合和文档是否存在,如果不存在,则使用 .net 在 FireStore 中创建具有特定 ID 的集合和文档

如果Firestore中不存在文档,如何添加到数组并创建文档?

检查值是否存在,如果不存在则添加到列表中

检查值是否存在于集合或数组中,如果不存在,则将其添加

如何自动检查地图中是否存在键,如果不存在则添加键

检查对象数组中是否存在对象键,如果不存在则添加

检查表是否存在,如果不存在,请在SQL Server 2008中创建表

AngularFire检查值是否存在,如果不存在,则创建它

检查目标目录是否存在,如果不存在则进行创建,然后再进行

检查列表中是否存在用户名,如果不存在则仅创建用户

检查 $tablename 在 SQL Server 2017 中是否存在,如果不存在则创建表 $tablename

PHP 和 MYSQLI 检查用户 ID 是否存在,如果不存在则创建它

如何检查特定的 Azure ARM 资源是否存在,如果不存在,则使用 PowerShell 创建它

如何检查表是否存在,如果不存在则创建表?

检查FTP文件夹是否存在,如果不存在,则创建它

检查ID行是否存在,如果不存在,则创建它

检查集群参数组是否存在,如果不存在则仅使用 terraform 创建

线程安全数据结构以检查是否存在,如果不存在则写入

检查数据框中是否存在具有正确值的行,如果不存在则追加

如果 MongoDB 中不存在则创建文档并以原子方式向其添加字段

如果Mongo中的文档不存在,请添加字段

FireStore创建文档(如果不存在)