我试图让每个用户都有自己的数据,但我有我的用户保存在firebase和我的数据保存在JSON服务器,有没有办法连接他们?使每次用户注册和登录有自己的数据与其他用户分开。我希望你明白我想做的:)
下面是我在jsonserver.service.ts上存储数据的服务:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http : HttpClient,) { }
// order Table
postOrder(data : any){
return this.http.post<any>("http://localhost:3000/OrderList/",data);
}
getOrder(){
return this.http.get<any>("http://localhost:3000/OrderList/");
}
// order detials
postOrderDetials(data : any){
return this.http.post<any>("http://localhost:3000/OrderDetials/",data);
}
getOrderDetials(){
return this.http.get<any>("http://localhost:3000/OrderDetials/");
}
// item table
postItemTable(data : any){
return this.http.post<any>("http://localhost:3000/itemTable/",data);
}
getItemTable(){
return this.http.get<any>("http://localhost:3000/itemTable/");
}
// delete a row in the order table
DeleteOrder(id : number){
return this.http.delete<any>("http://localhost:3000/OrderList/"+id)
}
// to edit the item table
PutItem(data : any , id : number){
return this.http.put<any>("http://localhost:3000/itemTable/"+id,data);
}
// to add to the operation table
postOperation(data : any){
return this.http.post<any>("http://localhost:3000/OperationTable/",data);
}
getOperation(){
return this.http.get<any>("http://localhost:3000/OperationTable/");
}
}
下面是我的service.ts,用于将用户保存到firebase中:
interface authResponeData {
kind: string;
idToken: string;
email : string;
refreshToken : string;
expiresIn: string;
localId:string;
}
@Injectable({
providedIn: 'root'
})
export class AuthService {
userData: any;
constructor(
private fireAuth : AngularFireAuth, private router : Router,
public angularFireAuth: AngularFireAuth,
private api : ApiService) {}
login(email : string , password : string) {
this.fireAuth.signInWithEmailAndPassword(email,password).then( ()=> {
localStorage.setItem('AIzaSyC6Y3IuqNUMfEe-xQFpmviAD2dWeBCuztI' , 'true');
this.router.navigate(['Order-table']);
this.angularFireAuth.currentUser.then( data => {
console.log(data?.uid);
})
},err => {
alert(err.message);
this.router.navigate(['/login']);
})
}
register(email : string , password : string){
this.fireAuth.createUserWithEmailAndPassword(email , password).then( () => {
alert("registration successful")
this.router.navigate(['/login']);
}, err => {
alert(err.message);
this.router.navigate(['/register']);
})
}
SignOff() {
this.fireAuth.signOut().then( () => {
localStorage.removeItem('AIzaSyC6Y3IuqNUMfEe-xQFpmviAD2dWeBCuztI');
this.router.navigate(['/login']);
}, err => {
alert(err.message);
})
}
我希望,我把所有需要的信息,如果任何信息需要只是让我知道
2条答案
按热度按时间rbpvctlc1#
以下是您可以采用的几种方法:
1.一种选择是在JSON服务器上的数据对象中包含一个字段,用于存储用户的Firebase ID。当用户登录时,您可以检索其Firebase ID,并使用它来过滤从JSON服务器检索的数据,仅返回属于该用户的数据。
1.或者,您可以将对JSON服务器上用户数据的引用存储在Firebase用户文档的字段中。例如,您可以将JSON服务器上用户数据的URL存储在用户文档的字段中。当用户登录时,您可以检索此URL并使用它访问JSON服务器上的用户数据。
km0tfn4u2#
要实现第一个解决方案,可以执行以下步骤:
在Angular应用程序中,使用Firebase身份验证API对用户进行身份验证并检索其Firebase ID。
向JSON服务器发出请求时,将Firebase ID作为查询参数包含在请求中或包含在请求正文中。
在JSON服务器上,使用Firebase ID过滤返回给客户端的数据,例如,可以使用ID从数据库中只检索属于具有该ID的用户的数据。
在Angular应用程序中,使用过滤后的数据填充UI。
下面是一些示例代码来说明这种方法:
这种方法允许您轻松地只检索属于经过身份验证的用户的数据,而不必担心实现服务器端身份验证或管理用户会话