【发布时间】:2018-11-23 05:12:28
【问题描述】:
我正在尝试改进 firestore 获取功能,我有类似的东西:
return admin.firestore().collection("submissions").get().then(
async (x) => {
var toRet: any = [];
for (var i = 0; i < 10; i++) {
try {
var hasMedia = x.docs[i].data()['mediaRef'];
if (hasMedia != null) {
var docData = (await x.docs[i].data()) as MediaSubmission;
let submission: MediaSubmission = new MediaSubmission();
submission.author = x.docs[i].data()['author'];
submission.description = x.docs[i].data()['description'];
var mediaRef = await admin.firestore().doc(docData.mediaRef).get();
submission.media = mediaRef.data() as MediaData;
toRet.push(submission);
}
}
catch (e) {
console.log("ERROR GETTIGN MEDIA: " + e);
}
}
return res.status(200).send(toRet);
});
第一次get很好,但是性能最差就行了:
var mediaRef = await admin.firestore().doc(docData.mediaRef).get();
我认为这是因为调用没有批处理。
是否可以批量获取 mediaRef 数组以提高性能?
基本上我有一个文档集合,这些文档的外部引用由指向单独集合中路径的字符串存储,并且事实证明获取这些引用很慢。
【问题讨论】:
标签: javascript typescript firebase google-cloud-firestore