社区首页 >问答首页 >云函数火基返回值总是为空吗?

云函数火基返回值总是为空吗?
EN

Stack Overflow用户
提问于 2021-03-28 00:31:27
回答 1查看 271关注 0票数 0

我在防火墙中使用了云函数

功能思想是为会话设置领导者,如果没有领导者,返回领导者的用户id,我使用javascript。

它总是返回null,即使我返回snapshot.val或函数接收的用户id。

console.log(snapshot.val)给我对象对象

代码

代码语言:javascript
代码运行次数:0
复制
exports.SetLeader = functions.https.onCall((data, context) => {
userID = data.ID
sessionID = data.text
sessionref = "/Sessions/".concat(sessionID);
sessionref = sessionref.concat("/Leader");

var db = admin.database();
var ref = db.ref(sessionref);
console.log("ID" + userID)


        ref.once("value", function (snapshot) {
            console.log("snapchot"+ snapshot.val()); //x
            if (snapshot.val() == null) {
                admin.database()
                    .ref(sessionref).update({ userID })
                console.log("inside if " + userID)
                return { leader: userID };
            }else{
               console.log("inside else " + snapshot.val())
                return { leader: snapshot.val()};
            }

        }, function (errorObject) {
            console.log("The read failed: " + errorObject.code);
        });

        });

如果没有领袖,请登录,设置新的领导并返回id。

如果有一个头目,我需要返回他的身份证

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-28 01:30:32

正如在可调用云函数的doc中解释的那样,“要在异步操作之后返回数据,返回一个承诺的”。通过使用once()方法的“回调版本”,您不会返回承诺。

您应该使用“允诺版本”如下:

代码语言:javascript
代码运行次数:0
复制
return ref.once("value")
        .then(snapshot => {...});

此外,由于您必须处理不同的情况,这取决于快照的值,所以在云函数中使用async/await更易读。因此,以下内容应该能达到这个目的(未经测试):

代码语言:javascript
代码运行次数:0
复制
exports.SetLeader = functions.https.onCall(async (data, context) => {

    try {
        const userID = data.ID
        const sessionID = data.text
        const sessionref = `/Sessions/${sessionID}/Leader`  // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

        const db = admin.database();
        const ref = db.ref(sessionref);
        console.log("ID" + userID)

        const snapshot = await ref.once("value");
        console.log("snapchot" + snapshot.val());

        if (snapshot.val() == null) {
            await admin.database().ref(sessionref).update({ userID })
            console.log("inside if " + userID)
            return { leader: userID };
        } else {
            console.log("inside else " + snapshot.val())
            return { leader: snapshot.val() };
        }
    } catch (error) {
        // See https://firebase.google.com/docs/functions/callable#handle_errors
        // for more fine grained error management
        console.log(error);
        return null;;
    }

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66839634

复制
相关文章
open函数返回值为0
open函数是我们开发中经常会遇到的,这个函数是对文件设备的打开操作,这个函数会返回一个句柄fd,我们通过这个句柄fd对设备文件读写操作。
全栈程序员站长
2022/09/01
2.8K0
Pathvariable注解允许参数为空吗?
于是我们可以通过其他的方式来变通一下,首先想到的是通过 required 参数设置为 false
taixingyiji
2022/07/25
1.2K0
小程序根据返回值是否为空判断标签是否显示
如果为空,则不显示奖励这两个字的标签 wxml <view class="cu-item" wx:for="{{allSignList}}" wx:key="index"> <view class="content"> <view wx:if="{{item.taskReward}}">奖励:{{item.taskReward}}</view> </view> </view> js Page({ data: { allSignList: [] }, onLoad: fun
王小婷
2020/12/28
2.8K0
小程序根据返回值是否为空判断标签是否显示
函数指针,指针函数,返回值为指针的函数「建议收藏」
在学习C语言时,一个比较容易混淆的概念就是函数指针、指针函数、返回值为指针的函数。本文将对这三个概念进行区分。指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同。函数指针就是一个指向函数的指针,本质上是一个指针,只是这个指针指向的对象是函数,而不是一般意义上的存储对象。
全栈程序员站长
2022/06/25
3K0
Mybatis查询结果为空时,为什么返回值为NULL或空集合?
一行数据记录如何映射成一个 Java 对象,这种映射机制是 MyBatis 作为 ORM 框架的核心功能之一,也是我们这篇文章需要学习的内容。
架构师修炼
2022/07/30
5.4K0
Mybatis查询结果为空时,为什么返回值为NULL或空集合?
C++函数指针、指针函数、返回值为函数指针的函数浅谈
函数指针、指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。 而返回值为函数指针的指针函数就更难理解了,放在文章的最后来介绍。
全栈程序员站长
2022/06/25
1.6K0
C++函数指针、指针函数、返回值为函数指针的函数浅谈
震惊 php empty 函数判断结果为空,但实际值却为非空
最近我在一个项目中使用 empty 时获取到了一些意料之外的结果。下面是我处理后的调试记录,在这里与你分享了。
柳公子
2018/09/17
3.3K0
jq 判断是否为空,为空隐藏指定 div
<style>.mydiv{ width:300px; height:300px; background:red;}</style> <div class="mydiv">     <div class="content">          这是一句话,删除的话会让 mydiv display:none;          </div> </div> <script src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script> <sc
Savalone
2020/02/11
7.1K0
linux bash shell 判断目录是否为空的函数
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/50427281
10km
2019/05/25
6.2K0
STL 设计之 EBO(空基类优化)
本节从空类开始,到 STL 内部,到测试,再到我们自己实现一个 EBO,对比性能,最后再测试,总结。
公众号guangcity
2019/10/24
2K0
Python 递归函数返回值为 None 的解决办法
在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。
AlwaysBeta
2022/03/15
7170
python判断是否为空_python 判断对象是否为空
在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:if a is None:
全栈程序员站长
2022/07/01
10.5K0
为Python云函数打包依赖
在使用无服务器云函数(SCF)的时候通常会遇到导入第三方库的时候,这个时候很多小伙伴就比较头疼:我如何打包进去呢?其实这里有几个方法可以尝试。
None-xiaomi
2019/06/06
4.1K0
java判断空对象为空_Java判断对象是否为空(包括null ,””)的方法[通俗易懂]
public static boolean isEmpty(Object obj)
全栈程序员站长
2022/06/25
7K0
stat()函数_stat函数返回值
在 linux 中,经常需要获取文件的属性,比如修改时间,文件大小等等。stat 函数将会帮助我们得到这些信息。
全栈程序员站长
2022/09/24
3.4K0
java如何判断对象为空_java对象如何判断是否为空
在实际书写代码的时候,经常会因为对象为空,而抛出空指针异常java.lang.NullPointerException。
全栈程序员站长
2022/06/25
13.4K0
java如何判断对象为空_java对象如何判断是否为空
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ;
韩曙亮
2023/10/11
7210
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
JavaScript中为空判断
摘要总结:本文介绍了JavaScript中为空判断的不同情况,包括判断字符串是否为空、变量是否被定义和初始化过。通过这些判断,可以帮助开发人员编写更加健壮的代码。
林老师带你学编程
2018/01/03
3.9K0
大数据需要拥抱云原生吗?云原生为什么这么火?
随着各种云平台、云计算的兴起,云原生的概念应运而生,至于什么是云原生下面的会详细介绍。作为大数据领域的开发者,如看待云原生的技术,需要深入学习它吗?我觉得云原生和大数据有着密切关系,云原生好比一把武器,如果你是一个武林高手,是拿一把神器去参加比武,还是拿着一根树枝和别人比武,结果很显然。
Lansonli
2022/04/15
1K0
大数据需要拥抱云原生吗?云原生为什么这么火?
Java Optional 初始为空
Optional<QualificationStateLabelInfo> stateSpecificLabel = null;
HoneyMoose
2022/05/18
2.7K0
Java Optional 初始为空

相似问题

火基云函数

23

火基云函数/修复

12

火基云函数标记

10

火基云函数误差

16

火基云函数- createCustomToken

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文