У меня две проблемы с моим кодом. Во-первых, я всегда получаю сообщение об ошибке: «Сайт с таким именем уже существует», даже несмотря на то, что в журналах сообщается, что он только что создан. Это, вероятно, потому что мой ответ нулевой. Во-вторых, я не знаю, как вернуть documentId
из createWebsite
обратно в onConfirmButtonClick()
, чтобы я мог использовать его для дальнейшей обработки. Любые идеи, что я могу сделать, чтобы решить эту проблему?
В компоненте:
onConfirmButtonClick() {
this.websiteService.createWebsite(this.websiteName).then(result => {
if(result) {
this.toastrService.success('Your website has been created.');
this.activeModal.close();
} else {
this.toastrService.error('A website with this name already exists.');
}
});
}
В обслуживании:
async createWebsite(name) {
return this.afs.collection('websites', (ref) => ref.where('name', '==', name).limit(1)).get().subscribe(websites => {
if(websites.size == 0) {
const documentId = this.afs.createId();
const documentPath = `websites/${ documentId }`;
const documentRef: AngularFirestoreDocument<any> = this.afs.doc(documentPath);
this.logger.debug(`Created a website at: '/${ documentPath }'`);
return documentRef.set({name: name}, { merge: true });
} else {
this.logger.debug(`A website with the name '${name}' already exists`);
}
})
}