我正在尝试在firestore云功能中使用getAll()方法。 问题是当我在getAll()中使用数组时,它会抛出一个错误:
[ts]类型的参数' DocumentReference []'不能分配给' DocumentReference'类型的参数。 财产' id'类型' DocumentReference []'中缺少。 const questionRefs:FirebaseFirestore.DocumentReference []
getAll()
方法看来,它接受FirebaseFirestore.DocumentReference []数组,但它没有。
任何想法,问题出在哪里?
const questionRefs = new Array<FirebaseFirestore.DocumentReference>();
for (const questionID of questions) {
const ref = admin.firestore().collection('question-bank').doc(questionID)
questionRefs.push(ref);
}
// then use getAll
admin.firestore().getAll(questionRefs).then(snapshots=>{
snapshots.forEach(snapshot=>{
// snapshot.data
console.log('A');
})
}).catch(err=>console.log('B'));
答案 0 :(得分:6)
根据API文档,getAll()的签名如下所示:
getAll(... documents)返回包含DocumentSnapshot数组的Promise
参数中的...documents
语法表示您可以单独传递一堆DocumentReference对象(如文档中的示例代码所示)。但是如果你想传递一个数组,你必须使用spread operator将数组转换为单个参数:
admin.firestore().getAll(...questionRefs)