那么对于这种一维的对象,只能用for in来遍历属性对比了
云数据库中对象字段的各属性顺序,在输出到小程序后会变化?今天遇到输出字段后顺序发生了变化,详见分别是用开发者工具云数据库,和小程序console.log打印出来的截图。这导致判断对象是否相等,不能简单的用JSON.stringify来做了,太可怕... 小程序输出,注意观察specs[0] [图片] 数据库后台,注意观察specs[0] [图片]
2020-01-16另外我发现一个小问题: let: { _openid: '$_openid' } 这里的参数里面不能带下划线_,会报错,去掉_可以。
云函数报错 $.pipeline is not a function ?const cloud = require'wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db = cloud.database() const _ = db.command const $ = db.command.aggregate // 云函数入口函数 exports.main = async (event, context) => { 省略.... const res = await db.collection('orders') .aggregate() .addFields(fields) .match(conditions) .lookup({ from: 'users', let: { _openid: '$_openid' }, pipeline: $.pipeline() .match(_.expr($.eq(['$_openid', '$$_openid']))) .project({ _id: 0, staffNickName: 1, nickName: 1 }) .done(), as: 'userList' }) .sort({ addTime: -1 }) .skip(skip) .limit(100) .addFields({ addTimeS: $.dateToString({ date: '$addTime', format: '%Y-%m-%d %H:%M:%S', timezone: 'Asia/Shanghai' }) }) .end() 详细错误日志如下: START RequestId: a03972e1-311-11ea-a6f9-525400235f2a Event RequestId: a03972e1-311-11ea-a6f9-525400235f2a TypeError: $.pipeline is not a function at EventHandler.exports.main [as realHandler] (/var/user/index.js:11719) at EventHandler.handle (/var/runtime/node8/bootstrap.js:40528) at invoke (/var/runtime/node8/bootstrap.js:20822) at Timeout.setTimeout [as _onTimeout] (/var/runtime/node8/bootstrap.js:137) at ontimeout (timers.js:47511) at tryOnTimeout (timers.js:310) at Timer.listOnTimeout (timers.js:270) END RequestId: a03972e1-311-11ea-a6f9-525400235f2a Report RequestId: a03972e1-311-11ea-a6f9-525400235f2a Duration:ms Memory:256MB MaxMemoryUsed:34.148438MB 如标题提示错误,大家遇到过吗?我目的是让子查询输出字段少一些。如果绕开pipeline,还可以用什么办法?
2020-01-07让你当初设计数据结构时不考虑周全!哈哈哈。我也绝望过几次,幸好还在项目初期数据量小。
update更新时,如何引用其他字段的值?const totalWeight = 10000; // 数据库中有如下记录: { "_id": "6d9dd8625e0eb4c9012e8b1f7a865b86", "sign_ok": true, "times": 2.0200103e+07, "weight": 0.44591564532418015, "tick": 0 } 现在要更新这条记录,将tick更新为 weight * totalWeight的值,如何做到?
2020-01-04有时候仅仅为了取值我们可以用bindinput来绕开,但现在我希望是用户完成一次完整输入,离开输入框时做一些逻辑,没想到有啥好办法绕开。
input的blur在某些情况下不触发?类似这样的例子,blur之后立即回退页面。 做了一个代码片段,调试器里显示“blur works”,手机上会显示“blur does not work” https://developers.weixin.qq.com/s/tdWZ9FmW7Zdf
2019-12-13楼主解决问题了吗?我也遇到这个问题,头大
请问怎么解决setData让input框输入时会失去焦点?如果在键盘抬起后去setData渲染数据的话,input框就会失去焦点,请问有办法解决吗?
2019-12-10定义一下_: const _ = db.command
_.expr是什么?[图片] 如图所示,这是一个有问题的示。 _没有定义 并没有在文档中找到expr操作符 $eq和$gte 也是有问题的
2019-11-23db.RegExp 不能用在command里面,只能单独使用,所以你这里把w的两个条件拆开来,数据库查两次,这样都写在where里就可以了吧。 第一次查询: [代码]where({[代码][代码] [代码][代码]_openid: wContent.OPENID,[代码][代码]ar: db.RegExp({[代码][代码] [代码][代码]regexp: keyword,[代码][代码] [代码][代码]options: [代码][代码]'i'[代码][代码] [代码][代码]})[代码][代码]})[代码] 第二次查询: [代码]where({[代码][代码] [代码][代码]_openid: wContent.OPENID,[代码][代码]name: db.RegExp({[代码][代码] [代码][代码]regexp: keyword,[代码][代码] [代码][代码]options: [代码][代码]'i'[代码][代码] [代码][代码]})[代码][代码]})[代码] 再自己把两个查询得到的数组拼接起来。 可以看下我之前的帖子参考: https://developers.weixin.qq.com/community/develop/doc/000ca2cfee0c387c9069e27c95b400
请问如果实现多条件云函数查询数据库?我想先查询用户的openid然后再跨字段进行 "或" 操作,所以我用了.where().where()的方式,但是感觉很不规范,请问如何才能优化只有一个where()呢? [代码]let w = [],[代码][代码] [代码][代码]id = {}[代码][代码] [代码][代码]if[代码] [代码](keyword.trim() != [代码][代码]''[代码][代码]) {[代码][代码] [代码][代码]w = [{[代码][代码] [代码][代码]ar: db.RegExp({[代码][代码] [代码][代码]regexp: keyword,[代码][代码] [代码][代码]options: [代码][代码]'i'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]{[代码][代码] [代码][代码]name: db.RegExp({[代码][代码] [代码][代码]regexp: keyword,[代码][代码] [代码][代码]options: [代码][代码]'i'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]][代码][代码] [代码][代码]}[代码][代码] [代码][代码]id = {[代码][代码] [代码][代码]_openid: wxContext.OPENID[代码][代码] [代码][代码]}[代码][代码] [代码][代码]//先获取openid 然后再进行条件搜索,条件搜索数组不能为空,所以进行了一个判断[代码][代码] [代码][代码]if[代码] [代码](w.length != 0) {[代码][代码] [代码][代码]ctx.body = await cloud.database().collection([代码][代码]'collectMusiclist'[代码][代码]).where(id).where(_.or(w)).skip(event.start).limit(event.count)[代码][代码] [代码][代码].orderBy([代码][代码]'createTime'[代码][代码], [代码][代码]'desc'[代码][代码])[代码][代码] [代码][代码].get().then(res => {[代码][代码] [代码][代码]return[代码] [代码]res[代码][代码] [代码][代码]})[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]ctx.body = await cloud.database().collection([代码][代码]'collectMusiclist'[代码][代码]).where({[代码][代码] [代码][代码]_openid: wxContext.OPENID[代码][代码] [代码][代码]}).skip(event.start).limit(event.count)[代码][代码] [代码][代码].orderBy([代码][代码]'createTime'[代码][代码], [代码][代码]'desc'[代码][代码])[代码][代码] [代码][代码].get().then(res => {[代码][代码] [代码][代码]return[代码] [代码]res[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码]新手一枚,想请各位大佬解答一下
2019-11-23我触底时往数组增加数据,下拉刷新数据时直接刷新数组。其实用户在下拉刷新时,原来的数据就没什么用了,不如这样简单处理。
下拉刷新,新数据如何插到列表头部请教: 上拉加载没有问题,场景是顶部【下拉加载】 实现长列表下拉刷新,下拉后进行数据的请求; 为了性能优化,数据通过增量插入, 每次setdata通过键插入新数据, 实现二维数组只更新插入新增数据, 避免全量setdata // data update to set _this.setData({ ... [`listPullDown[${page}]`]: res.data }); 这种情况下数据如何将数据插入到list头部呢? 现在的解决方法是在view里通过reverse()将数组反转, 担心数据多了会有性能问题, 请教是否有更优处理方式? 3Q
2019-10-30我这边看到类似问题。在hideTabber之后获取windowHeight,有些Android手机上不正常,iPhonexs没出过问题。
请问怎么获取tabbar高度现在有个需求,在有tabbar的页面(首页),调用wx.hideTabBar()后,再获取windowHeight。问题是,获取到的windowHeight仍然是tabbar隐藏前的高度,所以有没有办法获取tabbar的高度?
2019-10-16什么时候该开发者工具问题解决下?官方
wx.getSystemInfoSync获取的windowHeight不准确- 当前 Bug 的表现(可附上截图) [图片] 页面设置wx.hideTabBar,然后wx.getSystemInfoSync()获取信息不准确。 - 预期表现 一般情况下由于windowHeight是可用高度,减去了TabBar高度,预期正确。但使用hideTarBar隐藏TabBar后,结果应该是不减去TabBar高度的值。 - 复现路径 1.页面设置wx.hideTabBar()。 2. wx.getSystemInfoSync()。 - 提供一个最简复现 Demo onReady () { wx.hideTabBar(); console.log(wx.getSystemInfoSync().windowHeight); }
2019-10-16