- 云数据库中数组的addToSet操作,是添加元素到数组尾部吗?
开发文档中明确了push操作是可以添加到数组尾部的。 但是对addToSet操作,并没有说明当元素不在数组中时,会添加到数组尾部。 请问这里有没有明确的规则?
2020-04-13 - 请问如何在用户授权后判断授权是否失效?
经过运行发现,用户授权后,该授权可能再次失效。 当授权失效时需要再次显示授权按钮,让用户重新授权。这需要预先判断用户的授权状态。 请问有没有方法在小程序端判断已授权用户的授权失效状态?
2020-02-17 - 云数据库存储的授权用户信息如何更新?
当用户授权小程序获取自己信息后,小程序可以把这些信息(主要是昵称和头像链接)保存到云数据库中。 当用户修改自己的昵称或头像后,只有当用户再次使用小程序,小程序才能重新获取到更新后的昵称或头像,再把更新后的信息保存到云数据库中。 这样存在一个问题:如果用户更新信息后没有使用过小程序,则小程序无法获取更新后的信息,云数据库中的用户信息不再是新的。用户头像链接会失效,这样其它用户看到该用户的头像是空白。 请问如何解决这种问题呢?是否存在用户信息的更新推送接口?
2020-01-27 - 云函数环境如何实现类似setTimeout的超时定时器?
例如,我想1分钟后执行一个操作,在小程序端可以使用setTimeout(fn,60000)调用实现,因为小程序端的运行环境一直都在。 可是在云函数环境,用户一个访问过来,接受用户访问的云函数实例运行最多20秒就结束了。没有了运行环境,在云函数中调用setTimeout(fn, 60000)就无法保证1分钟后执行函数fn 可以考虑使用定时触发器实现,建立一个每秒执行的定时器。接受用户访问的云函数中,可以写入数据库,设置60秒超时信息。定时器每秒把超时数字减一,超时信息等于0时意味着60秒定时到了。 但是上面的实现方案开销太大,每秒钟都要操作数据库。 有没有更好的办法?
2019-12-13 - 云环境中setTimeout调用为什么没有在指定时间执行?
在某个云函数,写了如下代码: [代码]console.log([代码][代码]"timer start"[代码][代码])[代码][代码]setTimeout([代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]console.log([代码][代码]"timer end"[代码][代码])[代码][代码] [代码][代码]const tdb = cloud.database()[代码][代码] [代码][代码]tdb.collection([代码][代码]'test'[代码][代码]).add({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]time: db.serverDate()[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]if[代码] [代码](res.errMsg.indexOf([代码][代码]'ok'[代码][代码]) == -1) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]console.log([代码][代码]"add test failed."[代码][代码])[代码][代码] [代码][代码]return[代码] [代码]null[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码]}, 10000) [代码] 期望10秒后执行添加记录到test数据库的操作,但是10秒后代码并没有执行。 等到20秒后某个来自小程序端的请求来了,此时添加test记录的那段代码就执行了。 这是什么原因呢?
2019-12-12 - 云数据库接口调用警告调用时间超过3秒怎么解决?
代码很简单,没有复杂的查询,但是仍旧报调用时间超过3秒的告警。运行环境是云函数。 Database operation database.queryDocument is longer than 3s. Please check query performance and your network environment. [代码]async [代码][代码]function[代码] [代码]getHelpMark(result) {[代码][代码] [代码][代码]console.log([代码][代码]"qzid:"[代码] [代码]+ result.qzid)[代码][代码] [代码][代码]return[代码] [代码]new[代码] [代码]Promise([代码][代码]function[代码][代码](resolve, reject) {[代码][代码] [代码][代码]let db = cloud.database()[代码][代码] [代码][代码]let t_quizzes = db.collection([代码][代码]'quizzes'[代码][代码])[代码][代码] [代码][代码]t_quizzes.doc(result.qzid)[代码][代码] [代码][代码].field({ helpMark: [代码][代码]true[代码] [代码]})[代码][代码] [代码][代码].get().then(res => {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]resolve({[代码][代码] [代码][代码]qzid: result.qzid,[代码][代码] [代码][代码]helpMark: res.data.helpMark[代码][代码] [代码][代码]})[代码][代码] [代码][代码]})[代码][代码] [代码][代码]})[代码][代码]}[代码]看不出有什么影响效率的地方,请高手指点迷津,谢谢!
2019-12-09 - 使用addToSet功能出错,把整个数组作为一个元素添加到数据库中?
使用addToSet功能添加元素到云数据库一个数组字段中: [代码]console.log([代码][代码]"errqids:"[代码][代码]+event.errqids)[代码][代码]await achieves.where({ uid: user.uid, cid: event.cid })[代码][代码] [代码][代码].update({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]errqids: _.addToSet({[代码][代码] [代码][代码]each[代码][代码]:event.errqids[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]if[代码] [代码](res.errMsg.indexOf([代码][代码]'ok'[代码][代码]) == -[代码][代码]1[代码][代码]) {[代码][代码] [代码][代码]console.log(res)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码] 云函数日志可以看除errqids是一个数组: 2019-10-23T02:40:09.224Z { action: 'saveErrors',errqids: [ 5, 31 ], 但是最终添加的结果是这样:[图片] 这是什么原因呢?之前这样操作都是正常的。
2019-10-23 - 云开发控制台里无法搜索数据库记录?
云开发控制台里无法搜索数据库记录,提示格式是filed:value 我使用"_id":"5d263bd45d634da409b656ac3084dd32" 或者_id:5d263bd45d634da409b656ac3084dd32 搜索都不行,查不出这条已经存在的记录。 请问怎么回事?谢谢!
2019-08-27 - 如何在onShareAppMessage里面截屏?
onShareAppMessage()里面如果不自定义返回数据,则系统默认会截取当前屏幕,在转发给用户时会显示该截图。 如果自己定义转发路径,那么系统不再提供默认截图。这时如何截取当前屏幕,生成截图,在转发时显示给用户呢?
2019-08-24 - 能否为swiper组件新增提供一个反应swiper-item被拖动的事件?
目前swiper组件提供三种事件: 1、current 改变时会触发 change 事件 2、swiper-item 的位置发生改变时会触发 transition 事件 3、动画结束时会触发 animationfinish 事件 但是这三种事件都是swiper-item的位置真正变化后才触发。 如果需要当swiper-item被拖动,但是其在swiper的索引没有改变(例如只拖了1/4位置)获得通知,目前看来没有办法做到。 如果有这个事件,就容易实现swiper拖拉到最后一个swiper-item后,可以向后台继续请求获取新的数据,以增加新的swiper-item的效果。 当然,直接提供swiper在第一个swiper-item时往前拖拉,在最后一个swiper-item时往后拖拉的触发事件也可以。
2019-08-22