如何将文档添加到Cloud Firestore中的集合

时间:2019-01-10 03:01:06

标签: firebase ionic-framework firebase-authentication google-cloud-firestore

我有一个名为“用户”的收藏。我正在尝试通过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']);

2 个答案:

答案 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。