簡體   English   中英

未捕獲的類型錯誤:firebase.firestore()…set 不是 HTMLButtonElement 的 function。<anonymous></anonymous>

[英]Uncaught TypeError: firebase.firestore()…set is not a function at HTMLButtonElement.<anonymous>

我使用 Firebase 來開發 web 應用程序。 我收到此錯誤消息

Uncaught TypeError: firebase.firestore(...).collection(...).orderBy(...).limit(...).set is not a function
    at HTMLButtonElement.<anonymous> (main.js:152)

因為這個代碼。

firebase.firestore().collection('script').orderBy('timestamp','desc').limit(1).set({
    finaltext: resultText.value,
    name: firebase.auth().currentUser.displayName,
    uid: firebase.auth().currentUser.uid
  },{merge: true}).catch(function(error){
    console.error('Error writing new message to Firestore', error);
  });

我搜索了互聯網,但找不到出現此錯誤消息的原因。 請給我一些建議好嗎?

方法limit返回Query類型的值:

限制

limit ( limit: number ): Query < T >

創建並返回一個只返回第一個匹配文檔的新查詢。

https://firebase.google.com/docs/reference/js/firebase.firestore.Query#limit

因此,當您要檢索數據時,會同時使用orderBylimit 如果要向數據庫添加數據,只需執行以下操作:

firebase.firestore().collection('script').set({
    finaltext: resultText.value,
    name: firebase.auth().currentUser.displayName,
    uid: firebase.auth().currentUser.uid
  },{merge: true}).catch(function(error){
    console.error('Error writing new message to Firestore', error);
  });

在使用set() (使用合並選項)或update()編寫新字段之前,您需要先使用get()獲取所需的文檔。

firebase.firestore().collection('script').orderBy('timestamp','desc').limit(1).get()
.then(querySnapshot => {
    if (!querySnapshot.empty) {
        //We are sure the document exists, we can then use update()
        return querySnapshot.docs[0].ref.update({
          finaltext: resultText.value,
          name: firebase.auth().currentUser.displayName,
          uid: firebase.auth().currentUser.uid
        });
    } else {
       throw new Error("No document");
    }
})
.catch(error => {
    console.log("Error:", error);
});

請注意, get()方法返回一個QuerySnapshot ,因此您需要執行querySnapshot.docs[0]以獲取與查詢返回的唯一DocumentSnapshot對應的 DocumentSnapshot。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM