Строка, конвертируемая в карту при настройке данных в firestore - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь сохранить строку с некоторыми специальными символами, и когда я пытаюсь это сделать, мой пожарный магазин сохраняет ее как карту. Вот что я имею в виду:

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);
  }
}

Приведенный выше код сохраняет мои данные следующим образом:

Screenshot of what is being saved on firestore

И вот как я хотел сохранить:

enter image description here

1 Ответ

2 голосов
/ 04 мая 2020

К сожалению, невозможно напрямую добавить данные с некоторыми специальными символами в firestore. Например, оператор ., в вашем случае, приводит к отдельному вложенному объекту, а не к обычной строке. Одним из возможных решений является использование FieldPath для предоставления ключей, но, к сожалению, поскольку ваш вопрос помечен для Flutter, в плагине firestore нет прямой поддержки.

Другой возможный вариант Решение состоит в том, чтобы заменить специальные символы другим разрешенным символом. В вашем случае, например, вы можете заменить их другим набором допустимых символов, таких как DOT или %24 или каким-либо другим числом, чтобы помочь вам точно определить, какой символ был заменен, и проанализировать его при извлечении.

Вот ссылка на аналогичную ветку для RTDB, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...