- 这两种查询方式得到的结果为啥不同?
云函数中使用下面两种查询,得到2种不同的结果。 console.log("--------------------------------") const testData = await db.collection('test').where({ test2: _.eq(1).or(_.eq(2)), test1: _.eq(false).or(_.exists(false)) }).get() console.log(testData) console.log("--------------------------------") const testData2 = await db.collection('test').where(_.and([ {test2: _.eq(1).or(_.eq(2))}, {test1: _.eq(false).or(_.exists(false))}, ])).get() console.log(testData2) console.log("--------------------------------") 打印的日志 -------------------------------- { "data": [ { "_id": "28ee4e3e60e71bf828dc9bd62b50045c", "test1": true, "test2": 1 }, { "_id": "79550af260e71c48253d51761594d600", "test1": true, "test2": 2 } ], "errMsg": "collection.get:ok" } -------------------------------- { "data": [], "errMsg": "collection.get:ok" } -------------------------------- 而在云开发控制台中,这两个得到的结果是相同的。 [图片]
2021-07-09 - 预拉取数据的疑问?bug?
今天研究了一下预拉取数据,有些疑惑的地方。 在我的代码包(1M)中使用预加载,在代码包中发出 db.collection返回数据比预加载数据要快。预加载需要调用云函数去获取数据库数据,小程序端直接db反而更快。尤其在要预加载的数据多时(你又不想在一个云函数中多次访问不同数据库集合)那么你就需要在设置的云函数中,分别调用其他的云函数,获取相应的数据,再统一由预设的云函数返回。速度会更慢。这时候的问题就是,你在小程序中的 wx.getBackgroundFetchData会返回错误(data no found),就是说,小程序启动了,但是数据还没回来。只能通过递归等待(有隐患吧)[图片] 2 . 经测试,小程序销毁后,这个预加载的缓存数据不会销毁。而下次冷启动设置的预加载函数一样会被调用。如果网络延迟一下,那么就会导致,小程序启动后,获取的不是当次冷启动下的预加载数据,而是上一次预加载的数据。这就不对了。如果再像上面的情况那样,你永远获取的只能是上一次的预加载数据。 问题出在预加载数据的缓存,应该在小程序销毁时一起销毁。 上面测试是在工具上进行的。以上是个人心得,有不对的地方希望大佬指出。感觉现在的预加载不是很舒服。
2021-05-25 - onShareTimeline,分享到朋友圈后,页面报错501023?
使用了云开发 [图片]
2020-07-07