发现cloud.getWXContext()的坑
有个项目,需从前端调用一个云函数(1),再从这个云函数(1)调用另一个云函数(2),因为在(2)中需要取openid,所以我就在(2)中加上以下代码:
const wxContext = cloud.getWXContext()
let oid=wxContext.OPENID
…
数据保存时加入openid字段:_openid: oid,
按腾讯提供的资料来写,一切正常!保存安装部署,成功!
运行程序,结果发现。。。集合中没有_openid字段,什么情况?
取openid不是固定写法吗?这还能出错?试了很久都没发现哪里的代码有问题。
后来我把数据保存改为:_openid: ‘’ + oid,
然后在数据库中终于看到了_openid字段,值为undefine,这就奇怪了,wxContext.OPENID取不到openid?
试了下从前端直接调用(2)是可以取到openid的。
那就是从云函数调用云函数时,第二个云函数中的 cloud.getWXContext()是无效的,真是好大的坑啊!
解决办法:在第一个云函数取openid,然后传给第二个云函数。