微信小程序云函数查询云数据库返回指定单列的数据

问题描述

用云函数获取云数据库中的值时,想只取得某一列的值返回,代码写成如下所示

let accessToken = db.collection('wxConfig').where({
    name: "AccessToken"
  }).get();
accessToken = accessToken.data[0].value
return accessToken;

发现报错,返回

{“errorCode”:1,“errorMessage”:“user code exception caught”,“stackTrace”:“Cannot read property ‘0’ of undefined”}

上述代码的accessToken.dataundefined?!
但是,将代码accessToken.data[0].value改成accessToken.data却可以正常返回

let accessToken = db.collection('wxConfig').where({
    name: "AccessToken"
  }).get();
  accessToken = accessToken.data
  return accessToken;

百思不得其姐
后查资料发现数据库.get()方法并不是直接返回数据,而是返回一个Promise,如果在云函数结束后直接返回小程序段一个Promise,那么云函数会自动将这个Promse解析,然后返回解析后的值。而如果想将直接从这个Promise读取数据,显然是只能返回undefine了,

解决办法

使用await关键字,要求Promise进行解析,解决后的代码如下

let accessToken = await db.collection('wxConfig').where({
   name: "AccessToken"
  }).get();
accessToken = accessToken.data[0].value
return accessToken;

关于Promise的使用,详细见博文

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值