我有用户数据存储在数据库中
users: {
-Kp56mwwpFiCwIXLszqu: {
email: "testemail@gmail.com",
name: "test name",
username: "testname"
},
-Kp58X2WGUVNazSSbRqF: {
email: "anotheruser@gmail.com",
name: "another user",
username: "anotheruser"
}
}
有没有办法获取用户的密钥,例如-Kp56mwwpFiCwIXLszqu
或-Kp58X2WGUVNazSSbRqF
。
我想向现有用户添加更多集合。例如。我以testname
身份登录,我想从数据库中获取testname
密钥,以便我可以在那里推送更多的集合。
感谢任何帮助。谢谢
答案 0 :(得分:1)
这些键看起来像自动生成的键。您可能希望通过将其数据保存在uid
下来更改在数据库中保存用户配置文件的方式。
例如:
// Definition of the user profile class.
export class UserProfile {
email: string;
name: string;
username: string;
}
----------------------------------------------------
// Inside of some service.
constructor(
private angularFireAuth: AngularFireAuth,
private angularFireDatabase: AngularFireDatabase
) { }
saveUserProfile(profile: UserProfile): firebase.Promise<void> {
let currentUserUid = this.angularFireAuth.auth.currentUser.uid;
return angularFireDatabase.object(`users/${currentUserUid}`).update(profile);
}
这应该将用户个人资料数据保存在他的uid
下。请注意,我使用update
方法而不是push
,因为push
生成一个新的唯一键,与update
或set
不同。那么您的数据将具有以下结构:
users: {
{user_uid_will_be_here}: {
email: 'someone@example.com',
name: 'Test User',
username: 'myusername'
}
}
然后,您可以在以后通过当前登录的用户uid
简单地访问该数据。
getCurrentUserProfile(): UserProfile {
let currentUserUid = this.angularFireAuth.auth.currentUser.uid;
return this.angularFireDatabase.object(`users/${currentUserUid}`);
}