- 在云函数中怎么读取云数据库中某条数据的某个具体的值?
因为数据库中的值要取出来在云函数中进行比较操作,但是怎么获取都是一个object对象,取不出具体的值。 比如数据库中的article集合中的某条数据中有name,sex,age,我单单把age的值取出来
2020-03-08 - 异步环境下获取 openid的几个方法
测试几段代码,在异步环境获取 openid ,以交流探讨。 1. 小程序启动时获取 在 Page 的 onLoad 阶段调用以下函数。该函数通过调用云函数获取openid。当拿到后即设置一个变量 dataReady。该变量用来控制 wxml 页面显示,当为真时即完整显示页面。这里假定:页面完整显示后再使用openid。 // index.js Page({ data: { openid : "", dataReady: false, }, onLoad: function(){ getopenid(this) //... }, }) function getopenid(that){ wx.cloud.callFunction({ name: getopenid, success: res=>{ that.setData({openid: res.openid, dataReady: true}) } }) } // index.xmls // // <block wx:if="{{dataReady}}"> // <view> // </view> // </block> // 在 函数getopenid中,除了采用回调函数方式,亦可用 Promise 对象(ES6),或 async/await型函数(ES8)等方式。 2. 在其他场合获取 这时要确保使用openid的代码应出现在获取操作完成后。比如使用回调函数方式: function getopenid(){ wx.cloud.callFunction({ name: getopenid, success: res=>{ //在这里使用openid } }) } 如果使用 ES6 中的 Promise 对象,就要出现在then语句块里: var p1 = new Promise(function (resolve, reject) { wx.cloud.callFunction({ name: "getopenid", data: {para1: "", para2: ""}, success: res=>{resolve(res)}, }) p1.then(res => { // 在这里使用 openid }, function(res){} ) 如果使用 ES8 中的async 型函数 ,则应该出现在 await 指令之后。 async getopenid function(){ lcid = await wx.cloud.callFunction() //在这里使用openid } 以下列出异步环境下的代码执行顺序:其中:*step i 表示由系统发起。先前各步迅速执行完后,控制权即交给系统。等到悬挂任务(PendingJob)完成后再由系统发起执行后续代码。 1. 回调函数方式 // step 1 func1() // step 4 function func1(){ // step 2 var lca = wx.cloud.callFunction({success: res=>{ // *step 5 } }) // step 3 } 2. Promise 对象 // step 1 var p1 = new Promise(function(resolve, reject){ wx.cloud.callFunction({ success: res=>{ // *step 4 resolve(res) } }) }) // step 2 p1.then({ // *step 5 }, { } ) // step 3 3. async/await 型函数 // step 1 func1() // step 3 async function func1(){ // step 2 var lca = await wx.clooud.callFunction() // *step 4 } 欢迎批评指正。[END]
2020-05-18 - 云函数ADD数据库,表名和字段名不确定的处理方法?
const db = cloud.database() // 云函数入口函数 exports.main = async (event, context) => { try { return await db.collection(event.tableName).add({ data: { _openid:openId, txt1: value1, txt2: value2, ... ... txtn: valuen } }) } catch (e) { console.log(e) } } //如果,我在JS页面调用云函数添加数据库条目,txt1.txt2.txt3等的数量是不确定的,被添加的数据库名也是不一样的,但是我想用一个云函数通配ADD的功能,要如何实现呢?
2020-09-14 - 小程序云开发怎么查询当前用户openid是否存在云数据库?
[图片][图片] 我想判断当前用户的openid 是否存在云数据库,如果不存在那就添加昵称和头像信息, 怎么判断啊 ?
2020-03-03 - 如何把openid放在全局呢?
我在app.js文件里加了如下代码: // 全局openid wx.cloud.callFunction({ name: 'login' }).then(res=> { this.openid = res.result.openid }) 然后在某个页面下加了如下代码: var global = getApp() console.log(global) 然后在控制台可以看到已经获取到全局的对象了 [图片] 然后我尝试把代码改成如下,就报错了,显示undefined,我留意到控制台输出undefined是在最开始的位置,不知道跟异步有没有关系: var global = getApp() console.log(global.openid) [图片] ———————————————————————— 更新: 我把app.js里面的代码改成如下: wx.cloud.callFunction({ name: 'login' }).then(res=> { this.openid = res.result.openid }) this.test = '123' 然后再访问,却是可以的。。。 [图片]
2019-11-21