Javascript 已创建文档,但响应为空
我的代码有两个问题。首先,我总是会遇到这样的错误:“一个同名网站已经存在”,尽管日志告诉我一个网站刚刚创建。这可能是因为我的回答是空的。其次,我不知道如何将Javascript 已创建文档,但响应为空,javascript,angular,firebase,google-cloud-firestore,Javascript,Angular,Firebase,Google Cloud Firestore,我的代码有两个问题。首先,我总是会遇到这样的错误:“一个同名网站已经存在”,尽管日志告诉我一个网站刚刚创建。这可能是因为我的回答是空的。其次,我不知道如何将documentId从createWebsite返回到onconfirButtonClick(),以便我可以使用它进行进一步处理。我能做些什么来解决这个问题 在组件中: onConfirmButtonClick() { this.websiteService.createWebsite(this.websiteName).then(
documentId
从createWebsite
返回到onconfirButtonClick()
,以便我可以使用它进行进一步处理。我能做些什么来解决这个问题
在组件中:
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`);
}
})
}
异步创建网站(名称){
返回此.afs.collection('websites',(ref)=>ref.where('name','==',name.).limit(1)).get().subscribe(websites=>{
如果(websites.size==0){
const documentId=this.afs.createId();
const documentPath=`websites/${documentId}`;
const documentRef:AngularFirestoreDocument=this.afs.doc(documentPath);
this.logger.debug(`在:'/${documentPath}'创建了一个网站');
返回documentRef.set({name:name},{merge:true});
}否则{
this.logger.debug(`名为'${name}'的网站已经存在');
}
})
}
在使用中,请执行以下操作:
createWebsite(name) {
return this.afs.collection('websites', (ref) => ref.where('name', '==', name).limit(1)).get();
}
这将返回一个可观测值,然后在组件中订阅该可观测值:
onConfirmButtonClick() {
this.websiteService.createWebsite(this.websiteName).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 }'`);
documentRef.set({name: name}, { merge: true });
this.toastrService.success('Your website has been created.');
this.activeModal.close()
} else {
this.logger.debug(`A website with the name '${name}' already exists`);
}
});
}
onconfirButtonClick(){
this.websiteService.createWebsite(this.websiteName).订阅(网站=>{
如果(websites.size==0){
const documentId=this.afs.createId();
const documentPath=`websites/${documentId}`;
const documentRef:AngularFirestoreDocument=this.afs.doc(documentPath);
this.logger.debug(`在:'/${documentPath}'创建了一个网站');
documentRef.set({name:name},{merge:true});
this.toastrService.success('您的网站已创建');
this.activeModal.close()
}否则{
this.logger.debug(`名为'${name}'的网站已经存在');
}
});
}
然后您将在组件中拥有
文档ID
,我不确定结果是什么。.整个代码中没有任何迹象表明您正在使用解析
从服务中的承诺中返回任何内容。请执行以下操作:
createWebsite(name) {
return this.afs.collection('websites', (ref) => ref.where('name', '==', name).limit(1)).get();
}
这将返回一个可观测值,然后在组件中订阅该可观测值:
onConfirmButtonClick() {
this.websiteService.createWebsite(this.websiteName).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 }'`);
documentRef.set({name: name}, { merge: true });
this.toastrService.success('Your website has been created.');
this.activeModal.close()
} else {
this.logger.debug(`A website with the name '${name}' already exists`);
}
});
}
onconfirButtonClick(){
this.websiteService.createWebsite(this.websiteName).订阅(网站=>{
如果(websites.size==0){
const documentId=this.afs.createId();
const documentPath=`websites/${documentId}`;
const documentRef:AngularFirestoreDocument=this.afs.doc(documentPath);
this.logger.debug(`在:'/${documentPath}'创建了一个网站');
documentRef.set({name:name},{merge:true});
this.toastrService.success('您的网站已创建');
this.activeModal.close()
}否则{
this.logger.debug(`名为'${name}'的网站已经存在');
}
});
}
然后您将在组件中拥有documentId
,我不确定结果是什么。.整个代码中没有任何迹象表明您正在使用resolve
从承诺中返回任何内容
我很高兴,这太好了!我很高兴,太好了!