используя адреса электронной почты в качестве ключей в FireStore - PullRequest
0 голосов
/ 17 мая 2018

Я хочу создать «приглашения» на основе адресов электронной почты, чтобы, когда пользователь с таким адресом электронной почты прибывал в систему, его приглашения уже ждали его.

, поэтому я хотел создать коллекцию приглашенийс ключом, основанным на groupId + '_' + invited_user_email, но если пользователь test@test.com, то .com интерпретируется как подраздел: (

Я пробовал groupId + '_' + invited_user_email.replace(/[.]/g,'\\.'), но это тоже не помогло.

Чего мне не хватает? Нет ли способа включить «.» В идентификатор документа пожарного депо?

РЕДАКТИРОВАТЬ: согласно запросу Дуга Стивенсона, вот код, который я сейчас использую:

     var invitedUserEmailAsKey=invitedUserEmail.replace(/[.]/g,'\\.')
     var batch = db.batch();

     var groupRef = db.collection("groups").doc(groupId);
     var invitationRef = db.collection("invitations").doc( groupRef.id + '_' + invitedUserEmailAsKey);

     var groupUpdates = {};
     groupUpdates['invited.' + invitedUserEmailAsKey + '.user_name'] = invitedUserName;
     groupUpdates['merge'] = true;

     batch.update(groupRef, groupUpdates);

Проблемы с обновленным документом в коллекции групп. В итоге он выглядит следующим образом: enter image description here

вместо ключа somebody@gmail.com

1 Ответ

0 голосов
/ 22 мая 2018

Использование update () с «точкой» в ключе интерпретируется как вложенное поле как , задокументированное здесь .

Обратите внимание, что вы обновляете поля документа (groupRef), а недействительно делать что-нибудь с коллекцией "приглашения".Я не думаю, что создание нового поля в групповом документе для каждого приглашения - это то, что вы действительно хотите сделать.

...