使用实时更新时,如何检查云火库文档是否存在

2022-08-30 05:39:05

这有效:

db.collection('users').doc('id').get()
  .then((docSnapshot) => {
    if (docSnapshot.exists) {
      db.collection('users').doc('id')
        .onSnapshot((doc) => {
          // do stuff with the data
        });
    }
  });

...但它看起来很冗长。我试过了,但这不起作用。我只想在订阅文档的实时更新之前检查文档是否存在。最初的获取似乎是对数据库的浪费调用。doc.exists

有没有更好的方法?


答案 1

您最初的方法是正确的,但是将文档引用分配给变量可能不那么冗长,如下所示:

const usersRef = db.collection('users').doc('id')

usersRef.get()
  .then((docSnapshot) => {
    if (docSnapshot.exists) {
      usersRef.onSnapshot((doc) => {
        // do stuff with the data
      });
    } else {
      usersRef.set({...}) // create the document
    }
});

参考:获取文档


答案 2

请检查以下代码。它可能会帮助你。

 const userDocRef = FirebaseFirestore.instance.collection('collection_name').doc('doc_id');
   const doc = await userDocRef.get();
   if (!doc.exists) {
     console.log('No such document exista!');
   } else {
     console.log('Document data:', doc.data());
   }