Angular2 UID 作为使用 Firebase 数据库的主键
Angular2 UID as primary key using Firebase Database
我正在使用 Firebase 作为身份验证方法和数据库在我的应用程序中创建一个注册组件。当我注册一个新用户时,会生成一个密钥,然后我将所有用户信息(包括来自身份验证的 UID)保存在我的数据库中。
我想做的是使用身份验证的 UID 作为我的主键,而不是 Firebase 生成的密钥。
这是我的代码:
component.ts
signupUser(user: User) {
this.firebaseAuth.auth
.createUserWithEmailAndPassword(user.email, user.password)
.then(value => {
console.log('Success!', value);
this.afdb.list('users').push({
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
uid: value.uid
});
})
.catch(err => {
console.log('Something went wrong:',err.message);
});
}
json 在 Firebase
users {
-KpgNYJ0adjVyOGJiyBF {
email: test@test.com
firstname: dasdsa
lastname: dsadsads
uid: 021oxk8X6rQL6gAfC0UhZpB4vZx2
}
}
我想要的
users {
021oxk8X6rQL6gAfC0UhZpB4vZx2 {
email: test@test.com
firstname: dasdsa
lastname: dsadsads
}
}
一如既往地非常感谢您的帮助。谢谢
编辑:
我忘了告诉我使用 AngularFire2。
使用 update
而不是 push
。 push
创建一个新节点和该节点的唯一键。而 update
更新指定的节点,或者如果它不存在则创建它。
signupUser(user: User) {
this.firebaseAuth.auth.createUserWithEmailAndPassword(user.email, user.password)
.then(value => {
console.log('Success!', value);
let userDetails = {
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
this.afdb.list('users').update(value.uid, userDetails);
})
.catch(err => {
console.log('Something went wrong:',err.message);
});
}
我正在使用 Firebase 作为身份验证方法和数据库在我的应用程序中创建一个注册组件。当我注册一个新用户时,会生成一个密钥,然后我将所有用户信息(包括来自身份验证的 UID)保存在我的数据库中。 我想做的是使用身份验证的 UID 作为我的主键,而不是 Firebase 生成的密钥。
这是我的代码:
component.ts
signupUser(user: User) {
this.firebaseAuth.auth
.createUserWithEmailAndPassword(user.email, user.password)
.then(value => {
console.log('Success!', value);
this.afdb.list('users').push({
firstname: user.firstname,
lastname: user.lastname,
email: user.email,
uid: value.uid
});
})
.catch(err => {
console.log('Something went wrong:',err.message);
});
}
json 在 Firebase
users {
-KpgNYJ0adjVyOGJiyBF {
email: test@test.com
firstname: dasdsa
lastname: dsadsads
uid: 021oxk8X6rQL6gAfC0UhZpB4vZx2
}
}
我想要的
users {
021oxk8X6rQL6gAfC0UhZpB4vZx2 {
email: test@test.com
firstname: dasdsa
lastname: dsadsads
}
}
一如既往地非常感谢您的帮助。谢谢
编辑: 我忘了告诉我使用 AngularFire2。
使用 update
而不是 push
。 push
创建一个新节点和该节点的唯一键。而 update
更新指定的节点,或者如果它不存在则创建它。
signupUser(user: User) {
this.firebaseAuth.auth.createUserWithEmailAndPassword(user.email, user.password)
.then(value => {
console.log('Success!', value);
let userDetails = {
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
this.afdb.list('users').update(value.uid, userDetails);
})
.catch(err => {
console.log('Something went wrong:',err.message);
});
}