我有一个名为“用户”的收藏。我正在尝试通过Google身份验证将用户添加到集合中,但是我不断收到以下错误:
FirebaseError:[code = invalid-argument]:无效的文档引用。文档引用必须具有偶数个段,但用户具有1个段。
这是代码
this.googlePlus.login({
'scopes': '',
'webClientId': environment.googleWebClientId,
'offline': true,
})
.then(user => {
// save user data on the native storage
const userRef: AngularFirestoreCollection<User> = this.afs.collection<User>(`users/`);
const data: User = {
email: user.email,
displayName: user.displayName,
uid: user.uid
};
userRef.set(data)
.then(() => {
this.router.navigate(['/home']);
答案 0 :(得分:0)
您的userRef
引用一个集合,对象的类型称为CollectionReference。您正在尝试使用应该成为该集合中的新文档的某个对象调用set()
。但这不是它的工作方式。相反,您似乎想调用add()
来添加具有新随机ID的新文档。
如果您已经以某种方式知道新用户文档的ID,则应使用该ID构建一个DocumentReference,然后在该DocumentReference上使用set()
来创建文档。
答案 1 :(得分:0)
Google+ is being discontinued,因此您应该查看Firebase身份验证或GCP's new Cloud Identity Platform。
对于Firebase身份验证,您必须收听.onAuthStateChanged
观察者。一旦它触发了user
对象,您就可以使用它并将新的用户文档写入Firestore中的用户集合。最佳实践是将uid
中的firebase.auth().currentUser.uid
用作users
集合中的用户文档ID。