簡體   English   中英

Firebase Cloudstore集合圖與forEach

[英]Firebase cloudstore collections map vs. forEach

我正在嘗試使用map函數來創建從集合返回的項的數組。

我的實現是使用forEach進行迭代,效果很好。 但是,我無法使其與map函數一起使用。

這是代碼:

 firestore.collection("notes").doc(this.props.id).collection('items').get() .then((snap) => { let items = [] snap.forEach((doc) => { items.push({id:doc.id,text:doc.data().text}) console.log(`${doc.id} => ${doc.data()}`); }); console.log(items) }); 

但是,這不起作用:

 firestore.collection("notes").doc(this.props.id).collection('items').get() .then((snap) => { let items = snap.map((doc) => { return {id:doc.id, text:doc.data().text} }) console.log(items) }); 

它發出一個錯誤消息,即“ snap.map”不是一個函數。

我不知道我要去哪里旅行?

forEach方法存在,但不存在映射。

但是,您可以獲取一系列文檔

QuerySnapshot中所有文檔的數組。

您可以調用地圖,如下所示:

let items = snap.docs.map(doc => {
    return { id: doc.id, text: doc.data().text }
})

snap可能不是真正的數組。 它可能是某種類似於數組的對象。 嘗試使用傳播運算符( ... )創建一個新數組,然后像這樣進行處理:

firestore.collection("notes").doc(this.props.id).collection('items').get()
.then((snap) => {
    let items = [...snap].map((doc) => {
        return {id:doc.id, text:doc.data().text}
    })
    console.log(items)
});

那應該將其轉換為一個真實的數組,這將使您能夠使用.map函數。

以我為例,我舉了一個小例子更新了一些內容:

const query = ...collection("notes").doc(this.props.id).collection('items');

query.snapshotChanges().map(changes => {
     changes.map(a => {
     const id = a.payload.doc.id;
     this.db.collection("notes").doc(this.props.id).collection('items').update({
            someItemsProp: newValue,
                })
            })
        }).subscribe();
    }

暫無
暫無

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

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