Angular Firestore - 获取文档 ID 作为 属性 以在其他函数中再次使用它 - Typescript

Angular Firestore - Get document ID as a property to use it again in an other function - Typescript

这是我的代码:

getOutfitsCollectionData(): Promise<any> {
    let outfitsRef = this.afStore.collection('outfits');
    let allOutfits = outfitsRef.snapshotChanges().pipe(
        map(actions=>{
            return actions.map(a=>{
                const id = a.payload.doc.id;
                return id
            })
        })
    )
    let outfitsID =  allOutfits.forEach(outID=>{
        console.log(outID)
        return outID
    })
    return outfitsID
}
}

当我做这部分的时候

let outfitsID =  allOutfits.forEach(outID=>{
        console.log(outID)
        return outID
    })

控制台给我这个:

console perfect

这正是我想要的,我只想重命名数组并将其设置为我的函数的结果,但是我放在这些行下面的每个 console.log 都没有做任何事情所以似乎每一行under 没有做任何事情。

如果我不清楚,请告诉我!

我想要做的是获取我的 collection 的每个文档 ID,以便在同一选项卡上的其他功能中使用它。

我认为创建服务可能更容易,但我真的不知道该怎么做。

请不要让我再次被禁止,我只是想学习......将我送到一个非常笼统的主题并不是很聪明。

我不只是想让专业人士提供有效的代码,我还想了解并变得更好。

感谢你们的帮助!

(顺便说一句,抱歉我的英语不好,我是法国人:))

所以稍微编辑一下:

我试过这段代码,我真的不明白为什么当我 console.log allOutf​​its 时,我没有得到很好的价值:

async getOutfitsCollectionData(){
    let outfitsRef = this.afStore.collection('outfits');
    let allOutfits = await outfitsRef.get().toPromise().then((step)=>{
        return step.forEach(doc=>{
        if (!doc.exists){
            console.log('Zut !')
        }else{
            console.log(doc.id)
            return doc.id
        }
    })
})
.catch(err=>{
    console.log('Error getting outfits', err)
})
console.log(allOutfits)
return allOutfits
}

问题出在这段代码:

return step.forEach(doc=>{
        if (!doc.exists){
            console.log('Zut !')
        }else{
            console.log(doc.id)
            return doc.id
        }

stepQuerySnapshot,因此您应该使用 step.docs 访问文档。函数 forEach 不是 return 数组,而是 return 未定义。 使用 map 实际上 return 转换后的数据:

return steps.docs.map(doc => doc.id);

我很久以前就完成了我的应用程序,但我认为这可能很有趣。

我终于决定学打字了哈哈

您无法获得承诺的价值,因为它不是 return,这正是我想要做的。

只要调用你的函数然后.然后做你想做的^^。

顺便说一下,我需要按照 Lim Shang Yi 的说法映射我的数据