从 Firestore 返回名称?

2024-01-31

我尝试在 Firestore 上获取名称后返回该名称,但由于某种原因它不起作用。

这是我的代码:

func getName() -> String {

        var name = ""

        db.collection("users").whereField("email", isEqualTo: user.email!).getDocuments { (snapshot, error) in

            if error != nil {

                print(error!)

            } else {

                for document in (snapshot?.documents)! {

                    name = document.data()["name"] as! String
                    // if I add `print(name) here, it works.`
                }
            }
        }
        return name
    }

但它返回一个空字符串:/我想返回实际名称。我该如何解决?


getDocuments是一个异步函数。这意味着name变量不会等待函数完成后再继续执行。如果你想从文档中返回返回的名字,可以看一下下面的代码:

 func getName(_ completion: (String) -> ()) {
    db.collection("users").whereField("email", isEqualTo: user.email!).getDocuments { (snapshot, error) in
        if error != nil {
            print(error!)
        } else {
            for document in (snapshot?.documents)! {
                name = document.data()["name"] as! String
                completion(name)
            }
        }
    }
}

getName { name in
    print(name)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Firestore 返回名称? 的相关文章

随机推荐