【发布时间】:2018-08-22 16:39:10
【问题描述】:
我正在尝试将多个图像的 url(之前加载到存储中)保存在 firestore 文档的子集合中。
到目前为止,我已经实现了它,但它会为每个图像生成一个文档(及其各自的子集合 img),这不是我想要的:
我知道函数 guardarImagen() 被每个图像迭代,但我不明白如何将它分开,以便它在第一级生成单个文档(在第二个它将是子集合,如果迭代没关系)我不知道我是否让自己被理解。
import { Injectable } from '@angular/core';
import { AngularFirestore } from 'angularfire2/firestore';
import * as firebase from 'firebase/app';
import { FileItem } from '../class/file-item';
@Injectable({
providedIn: 'root'
})
export class CargaImagenesService {
private myFolder = 'img';
constructor(private db: AngularFirestore) { }
cargarImagenesFirebase(imagenes: FileItem[]) {
const myTest = this.db.collection('test').ref.doc();
console.log(myTest.id)
const storageRef = firebase.storage().ref();
for (const item of imagenes) {
item.estaSubiendo = true;
if (item.progreso >= 100) {
continue;
}
const uploadTask: firebase.storage.UploadTask =
storageRef.child(`${this.myFolder}/${item.nombreArchivo}`)
.put(item.archivo);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
(snapshot: firebase.storage.UploadTaskSnapshot) =>
item.progreso = (snapshot.bytesTransferred / snapshot.totalBytes) * 100,
(error) => console.error('Error al subir', error),
() => {
console.log('Imagen cargada correctamente');
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) => {
item.url = downloadURL;
item.estaSubiendo = false;
this.guardarImagen({
nombre: item.nombreArchivo,
url: item.url
});
});
});
}
}
guardarImagen( imagen: { nombre: string, url: string } ) {
this.db.collection('test2').ref.doc().collection(`/${this.myFolder}`).add(imagen);
}
}
【问题讨论】:
标签: angular firebase google-cloud-firestore angularfire2