- 云函数时区TZ设置Asia/Shanghai无效?
看到很多帖子反应云函数时区不对,设置TZ为Asia/Shanghai无效,时至今日这个问题还没有解决吗? 这几天一直在折腾这个时区的问题: [图片] 照理来说和基础库没有关系,但试过其他办法无效,我也抱着试试看的态度试过换基础库也没用 以下是按照论坛里面其他人的帖子来操作的,他们都解决了,而我迟迟解决不了,问题依然存在,不知道问题出在哪儿 第一步:先在开发者工具云函数中配置了TZ [图片] 第二步:重新部署云函数 [图片] 数据库中存储的时间: [图片] 云函数查询结果的时间: [图片] 小程序打印结果的时间: [图片] 论坛里有建议使用 moment.js/dayjs方式进行调整的,但因为涉及到的云函数很多,真心不想使用那种方法,还是希望通过配置TZ能够解决这个问题,不知道问题出在哪儿?是开发工具的BUG吗?
2021-03-16 - 如何在index.js中取出app.globalData.userInfo的值?
[图片] 在app.js中给globalData.userInfo赋值了,在index.js中调用时却发现globalData的值为空对象,而空对象里面确是有值的,请问如何调用里面的userInfo的值? index.js的第8行打印结果是空对象,第9行打印结果是undefined 代码碎片:https://developers.weixin.qq.com/s/6Evr3Um47ulo 补充: 很多大神认为是异步的问题,我在app.js中直接打印了一下,使用Promis写法 [图片] 问题还是一样,在给globalData.userInfo赋值以前打印globalData是空对象,而实际上globalData中是有userInfo数值的。我觉得问题应该出在this.globalData={}上面,当我修改为this.globalData={userInfo:null}后 [图片] globalData不是空对象,显示userInfo:null,但是里面还有一个userInfo是有数值的 我在index.js页面获取globalData的数值结果与赋值语句前面的两个console一样,不知道怎样才能在index.js中获取正确的数值
2020-11-17 - 求一个数据库多个字段内容关键字搜索的匹配程度权重排序代码?
根据任意关键字,在云函数中搜索数据库的多个字段内容,根据与关键字的匹配程度进行权重排序,这个代码一点思路也没有,求大神给一个代码示例
2020-11-07 - aggregate联表筛选?参数格式?
数据库集合1:user [{"userId":"zqiang","age":20}, {"userId":"lling","age":27}, {"userId":"wcjing","age":19}, {"userId":"wxia","age":21}, {"userId":"zying","age":18}] 集合2:projects [{"name":"zqiang","subject":"体育","create-date":"Sat Aug 01 2020 13:45:26 GMT+0800 (中国标准时间)","province":"北京市","city":"北京市","district":"海淀区"}, {"name":"lling","subject":"英语","create-date":"Sat Jul 18 2020 16:45:39 GMT+0800 (中国标准时间)","province":"广东省","city":"广州市","district":"天河区"}, {"name":"wcjing","subject":"数学","create-date":"Fri Aug 09 2019 16:50:52 GMT+0800 (中国标准时间)","province":"辽宁省","city":"沈阳市","district":"铁西区"}, {"name":"lling","subject":"美术","create-date":"Sun Aug 02 2020 16:56:41 GMT+0800 (中国标准时间)","province":"上海市","city":"上海市","district":"徐汇区"}, {"name":"wcjing","subject":"英语","create-date":"Tue Jun 23 2020 17:02:03 GMT+0800 (中国标准时间)","province":"江西省","city":"南昌市","district":"东湖区"}, {"name":"zqiang","subject":"英语","create-date":"Thu Jun 18 2020 18:04:06 GMT+0800 (中国标准时间)","province":"福建省","city":"福州市","district":"台江区"}, {"name":"wxia","subject":"英语","create-date":"Sun Jun 07 2020 22:08:08 GMT+0800 (中国标准时间)","province":"广东省","city":"深圳市","district":"南山区"}, {"name":"zying","subject":"英语","create-date":"Tue Jun 23 2020 13:09:03 GMT+0800 (中国标准时间)","province":"北京市","city":"北京市","district":"丰台区"}] 小程序端通过普通picker和region picker传来几个筛选参数:age,subject,date,region(包含region[0],region[1],region[2]) 要求:通过这4个参数查询数据库中的数据,age,subject,date,region传过来的参数等于0,或者region[0],region[1],region[2]三个字符串为“全部”时跳过该筛选条件。若参数有效,则分别筛选>age,=subject,date,=region[0],=region[1],=region[2]的数据(这些条件不会同时并存,需要根据小程序传参判断该筛选条件是否成立) 我的程序: const db = cloud.database() const _ = db.command const projects = db.collection("projects") const $ = _.aggregate async function getprojectslist (age,date,subject,region){ //根据date参数判断create-date是全部?1天内?3天内?7天内? let mseconds = 0 if(date == 0){ mseconds = 0 }else if(date == 1){ mseconds = -86400000 }else if(date == 2){ mseconds = -259200000 }else if(date == 3){ mseconds = -604800000 } let daysel = db.serverDate({offset:mseconds}) //设置查询条件 projectsMatch = [] //查询条件为空,返回所有数据 if((age== 0 && date == 0 && subject == 0 && region == 0) || (age== 0 && date == 0 && subject == 0 && region[0] == "全部" && region[1] == "全部" && region[2] == "全部")){ const projectList = projects.get().then(res =>{ return res }) return projectList }else{//判断至少存在一个筛选条件,把有用的筛选条件放入数组 if(date != 0){ projectsMatch.push($.gte(['$date', daysel])) } if(trade != 0){ projectsMatch.push($.eq(['$subject', subject])) } if(region != 0){ projectsMatch.push($.eq(['$province', region[0]])) } if(region != 0 && region[1] != "全部"){ projectsMatch.push($.eq(['$city', region[1]])) } if(region != 0 && region[2] != "全部"){ projectsMatch.push($.eq(['$district', region[2]])) } const projectList = db.collection('projects').aggregate() .lookup({ from: "user", localField: "name", foreignField: "userId", as: "uid" }) .replaceRoot({//把user集合中的age根据userId和name匹配联表查询放入projects集合中 newRoot: $.mergeObjects([ $.arrayElemAt(['$uid', 0]), '$$ROOT' ]) }) .project({ uid: 0 }) .match(_.expr($.and([ // $.gte(['$age',Number(age)]),//挨个调试过,单独的功能正常,但多个条件组合就只返回最后一个筛选条件的结果 $.gte(['$date',daysel]),//单独反复调试,一直无效 // $.gte(['$subject,subject]),//没有调试过 // $.eq(['$province',region[0]]),//挨个调试过,单独的功能正常,但多个条件组合就只返回最后一个筛选条件的结果 // $.eq(['$city',region[1]]),//挨个调试过,单独的功能正常,但多个条件组合就只返回最后一个筛选条件的结果 // $.eq(['$district',region[2]])//挨个调试过,单独的功能正常,但多个条件组合就只返回最后一个筛选条件的结果 // projectsMatch//单独调试过,把这个条件数组放在里面无效 ]))) .end() .then(res => { return res }) return projectList } } 请大神帮忙看看问题出在哪儿,感激不尽!!!!!
2020-08-17 - aggregate中如何使用外部变量?
if(member != 0){ const projectList = db.collection('projects').aggregate() .lookup({ from: "user", localField: "displayuser", foreignField: "userId", as: "uid" }) .replaceRoot({ newRoot: $.mergeObjects([ $.arrayElemAt(['$uid', 0]), '$$ROOT' ]) }) .project({ uid: 0 }) .match(_.expr($.and([ $.gte(['$level',member]), ]))) 这个aggregate中使用了member这个变量,member是冲小程序端传过来的参数,确认有数值,可是执行这段代码时却返回为空。当我把member修改为2时能够正确输出,请问大神问题出在哪儿?
2020-08-16 - 联表查询多个查询条件怎么实现?
我有两个集合: 集合1:users有以下数据 [{"userId":"zqiang","age":20}, {"userId":"lling","age":27}, {"userId":"wcjing","age":19}, {"userId":"wxia","age":21}, {"userId":"zying","age":18}] 集合2:course有以下数据 [{"name":"zqiang","subject":"体育","class":2,"position":"headman"}, {"name":"lling","subject":"英语","class":1,"position":"monitor"}, {"name":"wcjing","subject":"数学","class":2,"position":"headman"}, {"name":"lling","subject":"美术","class":3,"position":"student"}, {"name":"wcjing","subject":"英语","class":1,"position":"headman"}, {"name":"zqiang","subject":"英语","class":3,"position":"student"}, {"name":"wxia","subject":"英语","class":2,"position":"headman"}, {"name":"zying","subject":"英语","class":2,"position":"student"}] 要求:小程序端有4个筛选条件,分别是users集合的userId,course集合的subject,class,position字段,筛选数值等于数据库的数据。这4个筛选条件可能同时都会选择,也可能只有一项或两项,甚至有可能都没有。如果4个筛选条件都没有就返回所有的数据。 自己想过使用连表查询和动态拼接where条件的方法,试了1天也没有实现,望大神帮忙解决
2020-08-15