0

私のクラウド機能にドキュメントが存在するかどうかをチェックする方法を探しています 既存の値をインクリメントするときに私の機能はうまく動作しますが、以前の値が存在するかどうかをチェックし、1に設定されていないかどうかを確認する機能です。Firebaseクラウド機能が存在しないデータのためにdbをチェックする

私は別の方法を試みましたが、 "snapshot.exists"や "TypeError: docRef.get.then.snapshot

以下
var getDoc = docRef.get() 
     .then(snapshot => { 

      if (typeof snapshot._fieldsProto.count !== undefined) { 
       console.log("haha3", snapshot._fieldsProto.count) 

       var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue")); 

       docRef.set({ 
         count: count + 1 
        }); 
      } 
      else { 
       docRef.set({ 
         count: 1 
        }); 
      } 

     }); 

における未定義のカウントが」存在()のエラーコードである

var getDoc = docRef.get() 
     .then(snapshot => { 

      if snapshot.exists() { 
       console.log("haha3", snapshot._fieldsProto.count) 

       var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue")); 

       docRef.set({ 
         count: count + 1 
        }); 
      } 
      else { 
       docRef.set({ 
         count: 1 
        }); 
      } 

     }); 

このコードのエラーは次のとおりです。

TypeError: snapshot.exists is not a function at docRef.get.then.snapshot

+0

文書は、スナップショット呼び出し[ 'DocumentSnapshot.exists()'](https://firebase.google.com/docs/reference/jsに存在するかどうかを確認するには/firebase.firestore.DocumentSnapshot#~exists)。それがうまく行かない場合は、正確なエラーメッセージと[エラーを再現する最小完全コード](http://stackoverflow.com/help/mcve)を表示してください。 –

+0

存在エラーのコードを追加しました – Blue

+1

そのコードで発生するエラーは何ですか? –

答えて

1

それはコレクションにdocRefのいずれかのポイントのように思えるまたはクエリです。その場合、snapshotQuerySnapshotです。

クエリに結果があるかどうかを確認するには、QuerySnapshot.emptyを使用します。

+0

助けてくれてありがとう、私はまだ関数が存在しません私は未定義のチェックでそれを働かせることができました。私は別の答えとしてそのコードを投稿しました。それについての何かがあなたに目立つかどうか私に教えてください – Blue

0

空でも存在していても関数ではない(何度も試してみた)というエラーが出てきたので、最終的には未定義のチェックを使用して完全に動作しました。

var db = event.data.ref.firestore; 

    var docRef = db.collection(userID).doc("joined").collection("total").doc("count"); 


    var getDoc = docRef.get() 
     .then(snapshot => { 
      console.log("augu1", snapshot) 
      if (snapshot._fieldsProto === undefined) { 
       console.log("digimon1") 
       docRef.set({ 
         count: 1 
        }); 
      } 
      else {  
       console.log("haha31", snapshot._fieldsProto.count) 

       var count = Number(jsonParser(snapshot._fieldsProto.count, "integerValue")); 

       docRef.set({ 
         count: count + 1 
        }); 
      } 

     }); 
0

それは問題は、私が想像よりもはるかに簡単ですが判明:DocumentSnapshot.existsは読み取り専用プロパティ、関数ではなく。だから、それを使用する適切な方法は次のとおりです。

if snapshot.exists() 
関連する問題