无法获得ID与UID相同的Firestore文档

时间:2019-09-06 06:53:02

标签: google-cloud-firestore

尝试访问ID为uid的Firestore文档失败,找不到文档。

我有一个非常简单的设置,并尝试学习Vue和利用Firebase功能。我已经成功使用Firebase身份验证,但是在尝试访问Firestore中的文档(其ID与用户的uid相同)时,找不到文档。

将安全规则设置为尽可能开放,这样它们就不会引起问题(您不应该在生产中使用它):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
        allow read, write: if true;
    }
  }
}

firebase的Js代码

firebase.initializeApp(config)

// firebase utils
const db = firebase.firestore()

// firebase collections
const usersCollection = db.collection('users')

usersCollection.doc('testid').get().then((userSnapshot) => {
  if (userSnapshot.exists) {
    console.log('User data:', userSnapshot.data())
  } else {
    console.log('No such document!')
  }
}

运行先前的代码成功,并且我从Firestore获取ID为 testid 的文档的数据。但是当我用用户的uid替换 testid KmJ9JC5Zb0O45d8xcndVgAowIzF2 ,找不到文档。

Firestore中的数据应该没问题:

Link to image showing Firestore data(由于信誉不佳,无法在此处直接添加图片...:)

这个错误一定很简单,但是我已经花了很长时间来解决这个问题,并决定向社区询问。

1 个答案:

答案 0 :(得分:0)

问题可能与路径有关。

尝试这种方法,而不要使用db.collection('users').doc('uid')

const userData = await firebase
  .firestore()
  .doc(`users/${userToken.uid}`)
  .get();

console.log(userData.data());

希望有帮助!