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 allOutfits 时,我没有得到很好的价值:
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
}
step
是 QuerySnapshot
,因此您应该使用 step.docs
访问文档。函数 forEach
不是 return 数组,而是 return 未定义。
使用 map
实际上 return 转换后的数据:
return steps.docs.map(doc => doc.id);
我很久以前就完成了我的应用程序,但我认为这可能很有趣。
我终于决定学打字了哈哈
您无法获得承诺的价值,因为它不是 return,这正是我想要做的。
只要调用你的函数然后.然后做你想做的^^。
顺便说一下,我需要按照 Lim Shang Yi 的说法映射我的数据
这是我的代码:
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 allOutfits 时,我没有得到很好的价值:
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
}
step
是 QuerySnapshot
,因此您应该使用 step.docs
访问文档。函数 forEach
不是 return 数组,而是 return 未定义。
使用 map
实际上 return 转换后的数据:
return steps.docs.map(doc => doc.id);
我很久以前就完成了我的应用程序,但我认为这可能很有趣。
我终于决定学打字了哈哈
您无法获得承诺的价值,因为它不是 return,这正是我想要做的。
只要调用你的函数然后.然后做你想做的^^。
顺便说一下,我需要按照 Lim Shang Yi 的说法映射我的数据