【问题标题】:Firebase: return value from function(snapshot)Firebase:函数的返回值(快照)
【发布时间】:2017-07-11 10:27:48
【问题描述】:

我想获取返回值的人,并使用它。

如果我在 .on 内执行 var somthing = function(snapshot){ 会崩溃,说第二个值应该是函数。

我不能放弃orderBy,只能这样做

var results = function(snapshot)

这是我的代码。

我如何获得人们的价值?

peopleDataBase.orderByChild("mCalculateFaceSizeWidth")
                        .startAt(mCalculateFaceSizeWidth())
                        .limitToFirst(1)
                        .on("child_added", function(snapshot) {
                         var person = {
                                "name":snapshot.val().name,
                                "age":snapshot.val().age,
                                "id":snapshot.val().id,
                                "children":snapshot.val().children,
                                "address":snapshot.val().address,
                                "image":snapshot.val().image
                             }

                             if(key != snapshot.key){
                                people += person;
                                key = snapshot.key;

                                 }
                            return people;
                        });

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    在您的示例中,您将该值作为参数返回给导致错误的 .on 函数。试试这个(更多信息:https://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html):

    var result = peopleDataBase.orderByChild("mCalculateFaceSizeWidth")
                        .startAt(mCalculateFaceSizeWidth())
                        .limitToFirst(1)
                        .on("value").then(function(snapshot) {
    
                             //This forEach brings at most one node
                             snapshot.forEach(snapshotChild){
    
                               var person = {
                                   "name":snapshotChild.val().name,
                                   "age":snapshotChild.val().age,
                                   "id":snapshotChild.val().id,
                                   "children":snapshotChild.val().children,
                                   "address":snapshotChild.val().address,
                                   "image":snapshotChild.val().image
                                }
    
                                if(key != snapshotChild.key){
                                    people += person;
                                    key = snapshotChild.key;
                                }
                             }
                             return people;
                           });
    

    【讨论】:

    • 解析函数触发器时出错。 snapshot.forEach(snapshotChild){ ^ SyntaxError: Unexpected token {
    • 我打错了 snapshot.forEach(function(snapshotChild){
    • 我在你的例子中修复了一些东西,但结果是实际搜索 //This forEach 最多带来一个节点 snapshot.forEach(function(snapshotChild){ var person = { "name":snapshotChild .val().name, "age":snapshotChild.val().age,例如 on("value").then(function(snapshot) 也不起作用。.在期望两个 arg 并且在您的示例中只有 1
    • 现在我明白了你给我的例子,我在node js例子中看到了这个。但是我的代码不在客户端上运行,它直接在云上运行,带有云功能,所以像 .on("value").then(function(snapshot) 这样的东西不起作用。
    • 好吧,我还需要帮助,我如何返回 people 值,基本上我想将它与响应一起返回给移动客户端。
    猜你喜欢
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多