【问题标题】:Whats the best way to check for the existence of a document which contains a field with a specific value - Firestore?检查包含具有特定值的字段的文档是否存在的最佳方法是什么 - Firestore?
【发布时间】:2020-04-07 00:13:32
【问题描述】:

我想检查一个字段nam 是否有一个特定的值,如果为真则返回一个布尔值(或通过其他方式检查 - 不管)。 这是我的代码,它确实检查但仍然返回一些东西(一些来自服务器的自动生成的东西),如果我检查 null 当然它永远不会为空。

那么,最简​​单和最好的方法是什么?在服务器端做会更好吗?附言我想通知用户找到了具有此值的字段!

这是我当前的代码:

var type_of_vendor = db().collection(this.state.vendor_type).where('nam', '==', this.state.vendor_name);
type_of_vendor.get()
    .then((user) => {
        if (user.exists) {
            this.state.error = true;
            let errorMessage = 'error message';
            this.setState({ errorMessage: errorMessage });
        } else {
            this._signUpVendorvalidateHandler();
        }
    });

【问题讨论】:

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


    【解决方案1】:

    您的代码对我来说看起来不错。我唯一想改变的是在查询中添加.limit(1),这样即使有多个匹配项,您也永远不会检索超过 1 个文档。

    可以使用 Cloud Functions 或在您已经控制的服务器上执行此服务器端操作。

    如果您在服务器上执行此操作,您只需返回文档是否存在(布尔值),而不是整个文档。所以你在那里节省了一些带宽。

    【讨论】:

    • 感谢您的回复!你能给出一个代码示例如何在服务器端做到这一点吗?
    • 这取决于您运行代码的位置。在 Cloud Functions for Firebase 中,您将使用 Node.js,因此代码与您现在的代码非常相似。
    • 如何从 RN 调用该函数?
    • 例如像这样firebase.google.com/docs/functions/callable。在这一点上,我建议您阅读文档,找到一些您喜欢的有关构建 Cloud Functions 的教程,然后尝试自己构建它。如果您遇到困难,请回复concrete code of where you got stuck,我们可以尝试进一步提供帮助。
    • 好的,谢谢,您认为在整个身份验证操作中使用函数是个好主意吗?注册新用户时,我需要阅读和写入几个文档,但我在 RN 代码中完成所有这些操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2020-10-18
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多