Как узнать, существует ли запись в Firestore (узел) - PullRequest
0 голосов
/ 04 января 2019

То, что было так легко в базе данных Firebase, невозможно для меня сделать в FireStore.Мне просто нужно знать, существует ли запись в указанном документе.

const user = firebase.auth().currentUser.uid;
const currentPostId = this.posts[index].id;
const ref = db.collection(`likes`).doc(`${currentPostId}`); // need to know if this doc has records

В записи есть хранилище записей только с идентификаторами пользователей, которым понравилась запись, и отметкой времени.

enter image description here

Пока я могу это сделать:

const ref = db.collection(`likes`).doc(`${currentPostId}`);

  ref
    .get()
    .then(snapshot => {
      console.log("Exists?" + snapshot.exists); //true
    })

Но за свою жизнь я просто НЕ МОГУ найти способ пройти один уровеньглубже.

const ref = db.collection(`likes`).doc(`${currentPostId}/${user}`); //invalid reference segments must be odd numbers

const ref = db.collection(`likes`).doc(currentPostId).collection(user) //undefined

Я провел три дня, пробуя разные способы.в базе данных Firebase это было просто:

var ref = firebase.database().ref("users/ada");
ref.once("value")
  .then(function(snapshot) {
    var a = snapshot.exists();  // true
    var b = snapshot.child("name").exists(); // true
    var c = snapshot.child("name/first").exists(); // true
    var d = snapshot.child("name/middle").exists(); // false
  });

1 Ответ

0 голосов
/ 04 января 2019

Вы можете прочитать документ и проверить, есть ли в документе поле с идентификатором пользователя.

const ref = db.collection(`likes`).doc(currentPostId);

ref
.get()
.then(doc => {
  console.log("Exists?" + doc.exists); //true
  if(doc.exists){
     var documentData = doc.data();
     // Check whether documentData contains the user id 
     if (documentData.hasOwnProperty(userId)) {
        // do something
     }
  }
})

Код выше не проверен, но он должен работать.

Подсказка!Вы можете и должны сохранять временные метки, которые генерируются на стороне клиента вместе с временной меткой сервера firestore:

admin.firestore.FieldValue.serverTimestamp();

Потому что, если клиент изменил местное время, вы можете получить неправильное время.

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