您好我希望每个用户在我的数据库上存储日期,因为我想创建一个每个用户都有UID的节点。
我有一个使用该方法的身份验证服务:
signupCommerce(email: string, password: string){
return secondaryApp.auth().createUserWithEmailAndPassword(email, password).then(function(firebaseUser) {
console.log("User " + firebaseUser.uid + " created successfully!");
return firebaseUser.uid;
});
}
使用此方法的数据库服务:
createCommercePath(category:string,id:string, commerce:string, banner:string, logo: string, latitude:number, longitude:number){
this.db.database.ref().child(category).child(id).push({
name: commerce,
bannerUrl: banner,
logoUrl: logo,
lat: latitude,
lng: longitude
});
}
在我的组件中,我的表单调用此方法:
createCommerce(){
let commerceId = this.authService.signupCommerce(this.email, this.password);
this.db.createCommercePath(this.category, commerceId, this.commerce, this.bannerUrl, this.logoUrl, this.lat,this.lng);
}
我收到此错误:
Argument of type 'Promise<any>' is not assignable to parameter of type 'string'.
答案 0 :(得分:0)
signUpCommerce()
- 函数返回Promise<any>
。
let commerceId = this.authService.signupCommerce(this.email, this.password);
因此commerceId
的类型为Promise<any>
您可以将signUpCommerce
功能更改为以下内容:
signupCommerce(email: string, password: string){
return secondaryApp.auth().createUserWithEmailAndPassword(email, password);
}
然后在createCommerce()
createCommerce(){
this.authService.signupCommerce(this.email, this.password)
.then(firebaseUser => {
let commerceId = firebaseUser.uid;
this.db.createCommercePath(this.category, commerceId, this.commerce, this.bannerUrl, this.logoUrl, this.lat,this.lng);
});
}
答案 1 :(得分:0)
如错误中所述,您的方法返回值Promise<any>
。据我所知,你想得到从这个承诺中回来的字符串
因此,我建议您使用的一个选项是:(使用rxjs
,如果您的项目中没有它,则需要npm安装它)
import 'rxjs/add/operator/first';
import 'rxjs/Rx' ;
import 'rxjs/add/operator/toPromise';
signupCommerce(email: string, password: string){
return secondaryApp.auth().createUserWithEmailAndPassword(email, password).first().toPromise();
}
上面的代码适用于您的服务功能。
以及代码使用的以下代码:enter code here
createCommerce(){
let commerceId = this.authService.signupCommerce(this.email, this.password).then( response => {
this.db.createCommercePath(this.category, commerceId, this.commerce, this.bannerUrl, this.logoUrl, this.lat,this.lng);
})
.catch(err => console.log(err);
}
享受:)