Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 在firestore上设置数据时转换为映射的字符串_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Firebase 在firestore上设置数据时转换为映射的字符串

Firebase 在firestore上设置数据时转换为映射的字符串,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我试图用一些特殊字符保存一个字符串,当我尝试这样做时,我的firestore将其保存为一个映射。我的意思是: Future<Null> setSeen(bool seen, bool existent) async { print(episode['title']); //Output: Episódio 5.5 Map<String, dynamic> episodeData = {episode['title'].toString(): seen};

我试图用一些特殊字符保存一个字符串,当我尝试这样做时,我的firestore将其保存为一个映射。我的意思是:

Future<Null> setSeen(bool seen, bool existent) async {
  print(episode['title']);
  //Output: Episódio 5.5 
  Map<String, dynamic> episodeData = {episode['title'].toString(): seen};
  if (existent) {
    await Firestore.instance
        .collection('users')
        .document(uid)
        .collection('seen')
        .document(title)
        .updateData(episodeData);
  } else {
    await Firestore.instance
        .collection('users')
        .document(uid)
        .collection('seen')
        .document(title)
        .setData(episodeData);
  }
}
Future-setSeen(bool-seen,bool-existing)异步{
印刷(插曲[标题]);
//产出:EPSódio 5.5
Map eposodedata={eposion['title'].toString():seen};
如果(存在){
等待Firestore.instance
.collection('用户')
.文件(uid)
.collection('seed')
.文件(标题)
.更新数据(情节数据);
}否则{
等待Firestore.instance
.collection('用户')
.文件(uid)
.collection('seed')
.文件(标题)
.setData(eposodedata);
}
}
上面的代码按如下方式保存我的数据:

这就是我想要保存的方式:


不幸的是,无法直接向firestore添加带有某些特殊字符的数据。例如,在您的例子中,
操作符会生成一个单独的嵌套对象,而不是一个常规字符串。一种可能的解决方案是使用提供键,但不幸的是,由于您的问题被标记为
flatter
,firestore插件中没有对它的直接支持

另一种可能的解决方案是用其他允许的字符替换特殊字符。 例如,在您的情况下,您可以将它们替换为一组不同的有效字符,如
DOT
%24
或其他一些数字,以帮助您准确识别已替换的字符,并在提取时将其解析回原处


如果有帮助的话,这里有一个类似的RTDB线程的例子。

不幸的是,不可能直接向firestore添加带有一些特殊字符的数据。例如,在您的例子中,
操作符会生成一个单独的嵌套对象,而不是一个常规字符串。一种可能的解决方案是使用提供键,但不幸的是,由于您的问题被标记为
flatter
,firestore插件中没有对它的直接支持

另一种可能的解决方案是用其他允许的字符替换特殊字符。 例如,在您的情况下,您可以将它们替换为一组不同的有效字符,如
DOT
%24
或其他一些数字,以帮助您准确识别已替换的字符,并在提取时将其解析回原处


如果有帮助,这里有一个类似的RTDB线程。

字段名中的
被解释为访问嵌套字段的请求。您可以通过将字符串包装在
字段路径
对象中来防止这种情况,如下所示:,但我不知道如何在中执行此操作。请尝试将“\”放在点之前。字段名中的
被解释为访问嵌套字段的请求。你可以通过如下所示将字符串包装在
字段路径
对象中来防止这种情况,但我现在不知道如何在中这样做。尝试将“\”放在点之前该链接非常有用,我只是做了一个函数来替换firebase的关键字符,现在它作为一个符咒工作。谢谢这个链接真的很有帮助,我只是做了一个功能来替换firebase的关键角色,现在它作为一个符咒工作。谢谢