在Firestore中按特定字段值获取子集合

时间:2020-04-09 23:13:06

标签: javascript firebase react-native google-cloud-firestore firebase-authentication

如何根据字段值查找子集合?我目前正在使用此代码,但无法正常工作:

var user = db()
    .collection('myCollection')
    .doc()
    .collection('private')
    .where("nam", "==", this.state.passcode);

我想要实现的是进行自定义身份验证,因此向用户提供自定义用户名和密码(在这种情况下,仅是密码)。因此,我决定将这些凭据存储在文档中的单独子集合中。用户如何通过将用户名和密码的值与子集合的值进行比较来进行身份验证?

另一个问题,子集合凭证是个好主意吗?对我来说,费用与我将这些信息存储在文档中一样吗?

1 个答案:

答案 0 :(得分:1)

首先,您现在所做的工作根本不安全。永远不要将用户凭据存储在数据库中,尤其是不能将Web和移动客户端直接访问的用户凭据存储在数据库中。要正确执行此操作,您应该使用Firebase Authentication登录用户。 (您标记了该产品的Firebase-authentication这个问题。)实际上,正确进行安全性非常困难。 Firebase Auth将确保所有操作均正确完成。

第二,您现在拥有的查询将永远不会产生任何文档。这是因为您没有将任何内容传递给doc(),这意味着它将把DocumentReference返回到不存在的具有随机ID的文档。如果您希望为每个用户提供某种唯一标识符,那么可能需要将其传递给doc(),以便正确识别每个用户的子集合。