Как отправить непостоянное значение в Cloud Firestore? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу отправить value for a field на Cloud Firestore, но я не хочу быть persist(saved) в Cloud Firestore.

Код:

const message = {
  persistentData: {
     id: 'dSXYdieiwoDUEUWOssd',
     text: 'Hi dear how are you',
     date: new Date();
  },

  nonPersistentData: {
    securityCode: 393929949
  }
};

db.collection('messages').doc(message.persistentData.id).set(message).catch(e => {});

В приведенном выше коде я хочу persit (save) persistentData, но я не хочу save nonPersistentData online nor offline, потому что они нужны мне только для проверки реальных данных в Firestore rule. Поэтому я не хочу, чтобы они были accessible в cache(offline) or server(online) ...

1 Ответ

2 голосов
/ 24 апреля 2020

Это просто невозможно в пожарном депо. Есть похожий вопрос здесь . Вам необходимо разделить данные на публичные c (постоянные) и личные данные (непостоянные). Одним из возможных решений будет -

  1. . От клиента pu sh личные данные, которые содержат securityCode, в новую коллекцию под названием securityCodes и сохранение идентификатора новой записи. Поскольку вы не хотите, чтобы эта информация была доступна кому-либо, вы можете добавить правило безопасности
match /securityCodes/{securityCode} {
  // No one can read the value from this collection, but only create
  allow create: true;
}
В ваших опубликованных данных c добавьте идентификатор ранее добавленного документа
data = {
  id: 'dSXYdieiwoDUEUWOssd',
  text: 'Hi dear how are you',
  date: new Date(),
  securityId: <id of the secretCode entry>
}
В ваших правилах безопасности получите секретный код, используя идентификатор безопасности, который вы отправляете вместе с данными c. Пример -
match /collectionId/documentId {
  allow create: if get(/secretCodes/$(request.resource.data.secretId)) == 'someknowncode'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...