微信小程序云函数查询云数据库返回指定单列的数据
问题描述用云函数获取云数据库中的值时,想只取得某一列的值返回,代码写成如下所示let accessToken = db.collection('wxConfig').where({name: "AccessToken"}).get();accessToken = accessToken.data[0].valuereturn accessToken;发现报错,返回{“...
·
问题描述
用云函数获取云数据库中的值时,想只取得某一列的值返回,代码写成如下所示
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.data是undefined?!
但是,将代码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的使用,详细见博文
更多推荐



所有评论(0)