Я пишу облачную функцию firestore, используя TS для доступа к базе данных fireStore. Функция выполняет итерацию всех документов внутри коллекции, затем получает данные из каждого документа и, наконец, добавляет данные в простой объект. Я не уверен на 100%, является ли эта операция потокобезопасной. Если бы это было написано на других языках, мне нужно что-то вроде ConcurrentHashMap. Вот исходный код:
export async function readAllDocuments(): Promise<{ [key: string]: any }> {
const result: { [key: string]: any } = {};
const collectionRef = admin.firestore().collection("test");
const listRef = await collectionRef.listDocuments();
const readPromises = listRef.map(async (documentRef) => {
return documentRef.get().then((doc) => {
result[doc.id] = doc.data(); // Is this thread safe?
})
});
await Promise.all(readPromises);
return result;
}