簡體   English   中英

TypeError:無法在 it.fromString 處讀取未定義的屬性(讀取“indexOf”)

[英]TypeError: Cannot read properties of undefined (reading 'indexOf') at it.fromString

我正在嘗試按降序訂購我的“訂單”系列,但出現此錯誤,我似乎無法弄清楚原因。

 const [orders, setOrders] = useState([]);
  useEffect(() => {
    if (user) {
      const userOrders = onSnapshot(
        doc(db, "users", user?.id, "orders").orderBy("created", "desc"));
           setOrders(
           userOrders.map((doc) => ({
           id: doc.id,
           data: doc.data(),
         }))
      );
    } else {
      setOrders([]);
    }
  }, [user]);

我是 v9 模塊化 firebase 的新手,如果有人可以幫助我解決這個問題,我將不勝感激。

您的代碼中有幾個問題:

  1. 通過做doc(db, "users", user?.id, "orders").orderBy("created", "desc"); 您嘗試在DocumentReference上調用orderBy()方法,這是不可能的(實際上這個DocumentReference定義錯誤)。 您需要在CollectionReference上調用orderBy()方法。
  2. 您不能直接在userOrders上調用map() ,因為onSnapshot()為 DocumentSnapshot 事件附加了一個偵聽器並返回一個 function ,可以調用它來取消快照偵聽器。

我建議您閱讀以下文檔:


在您的情況下,查詢應聲明如下:

const collRef = collection(db, "users", user?.id, "orders");
const q = query(collRef, orderBy("created", "desc"));

const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
 console.log(doc.id, " => ", doc.data());
});
// Or querySnapshot.docs().map(...);

暫無
暫無

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

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