麻烦重试下,提供一个最新的requestId。
云开发用的云函数中调用mysql日志一直报调用失败?背景:云开发、云函数。由于云开发的db操作实在太麻烦,于是采用了自己搭建的mysql。然后小程序通过请求云函数,云函数再连接mysql获取需要的数据。 问题:云函数连接mysql获取到数据,前端显示日志正常,但云开发的云函数日志却显示调用失败。同样的requestID! 截图如下: [图片] 代码片段: const cloud = require('wx-server-sdk') //引入mysql操作模块 const mysql = require('mysql2/promise') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 云函数入口函数 exports.main = async (event, context) => { //链接mysql数据库,这里你可以链接你mysql中的任意库 try { const wxContext = cloud.getWXContext() const openid = wxContext.OPENID const connection = await mysql.createConnection({ host: "220.248.*.*", database: "bv_xxx", port: 3306, user: "username", password: "pwd***" }) console.log('event=', event) var offset = event.offset ? event.offset : 0; var pageSize = event.pageSize ? event.pageSize : 20; var apiType = event.apiType; //1:获取文章列表 //2:获取视频列表 //3:收藏列表 //4:收藏/取消收藏 switch (apiType) { case 1: //获取文章列表 var sql = 'select ar.*,(select count(1) from bv_collect where openid=\"' + openid + '\" and aid=ar.id) as collect from bv_article ar where ar.is_delete = 0 order by ar.create_time desc limit ' + offset + ',' + pageSize + ';' console.log('sql=', sql) var [rows, fields] = await connection.execute(sql) // console.log('rows=', rows) return rows; case 2: //获取视频列表 var sql = 'select * from bv_video where is_delete = 0 order by create_time;' var [rows, fields] = await connection.execute(sql) // console.log('rows=', rows) return rows; } return '格式错误' } catch (err) { console.log("链接错误", err) return err } }
2020-06-29https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/query-array-object.html#%E5%8C%B9%E9%85%8D%E6%95%B0%E7%BB%84%E4%B8%AD%E5%85%83%E7%B4%A0 匹配数组中的元素
小程序云开发中云数据库where中怎么查询某个数组下符合某个条件的数据?[代码]{[代码][代码] _id:face13585d4930ed0d0ea60c318aa616[代码] [代码] oils:[[代码] [代码] {[代码] oil_type:'92#', price: 7.92 }, [代码] {[代码] oil_type:'95#', price: 8.26 }, [代码] {[代码] oil_type:'98#', price: 9.04 }, [代码] ],[代码] [代码] station_id: 'W9yHmau9e31Z7KqO'[代码] [代码]},[代码][代码]{[代码][代码] _id:face13585d4930ed0d0ea60c34345[代码] [代码] oils:[[代码] [代码] {[代码] oil_type:'92#', price: 7.82 }, [代码] {[代码] oil_type:'95#', price: 8.26 }, [代码] {[代码] oil_type:'98#', price: 9.04 }, [代码] ],[代码] [代码] station_id: 'H9yHmau9e3342HS12a'[代码] [代码]},[代码][代码][代码] 上面是我某个数据表'oil_prices'中的数据,目前暂且只有2条,这时候我想通过根据station_id和oils数组中的oil_type进行查询到对应数据,然后更新对应的字段数据,能做到吗? 以下写法貌似没效果。 [代码]db.collection([代码][代码]'oil_prices'[代码][代码]).where({[代码][代码] [代码][代码]station_id: event.stationId,[代码][代码] [代码][代码]'oils.$[].oil_type'[代码][代码]: event.oilType[代码][代码] [代码][代码]}).update({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]'oils.$[].price'[代码][代码]: event.price[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]return[代码][代码]{[代码][代码] [代码][代码]code:200,[代码][代码] [代码][代码]msg:[代码][代码]'油价更新成功'[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码]
2019-12-13定时触发器https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/triggers.html 看看这个是否满足你的需求
云函数环境如何实现类似setTimeout的超时定时器?例如,我想1分钟后执行一个操作,在小程序端可以使用setTimeout(fn,60000)调用实现,因为小程序端的运行环境一直都在。 可是在云函数环境,用户一个访问过来,接受用户访问的云函数实例运行最多20秒就结束了。没有了运行环境,在云函数中调用setTimeout(fn, 60000)就无法保证1分钟后执行函数fn 可以考虑使用定时触发器实现,建立一个每秒执行的定时器。接受用户访问的云函数中,可以写入数据库,设置60秒超时信息。定时器每秒把超时数字减一,超时信息等于0时意味着60秒定时到了。 但是上面的实现方案开销太大,每秒钟都要操作数据库。 有没有更好的办法?
2019-12-13检查一下openid是否是undefined
云开发里的云函数调用update更新指定的单个用户成功后为什么会批量更新多条用户信息?下图是云函数文件[图片][图片] 下图是正常更新记录 [图片] 下图是异常更新记录 [图片]
2019-12-11麻烦提供一下requestId
getTempFileURL返回ok,但tempfileurl为空[图片]
2019-07-29本地的nodejs版本和云函数运行的nodejs版本,是否不一致?
云函数本地 OK,云端调用出错- 当前 Bug 的表现(可附上截图) 云函数中使用了 canvas 库,本地调试没问题,上传至云端(不传 node_modules)后,云端调用失败,返回错误如下: [代码]{[代码] [代码] "errorCode"[代码][代码]:1,[代码] [代码] "errorMessage"[代码][代码]:[代码][代码]"user code exception caught"[代码][代码],[代码] [代码] "stackTrace"[代码][代码]:[代码][代码]"Cannot find module '../build/Release/canvas.node'"[代码] [代码]}[代码] 怀疑是安装依赖出了问题,不知道有没有办法查看云函数部署日志?
2019-07-29支持sample,参考文档 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-server-api/database/aggregation/stages/sample.html
在小程序端不支持 aggregate sample获取随机记录- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 小程序端是否可以通过云api获取云数据库的随机记录 - 复现路径 - 提供一个最简复现 Demo
2019-07-24_.eq改成db.command.aggregate.eq试试
提BUG:aggregate.match()不能用command匹配请看代码: [代码]let querySum = await collection[代码][代码] [代码][代码].aggregate()[代码][代码] [代码][代码].match({[代码][代码] [代码][代码]dateNum:_.eq(20190723)[代码][代码] [代码][代码]})[代码][代码] [代码][代码].group({[代码][代码] [代码][代码]_id: [代码][代码]'$date'[代码][代码],[代码][代码] [代码][代码]sale: $.sum([代码][代码]'$goodsPrice'[代码][代码])[代码][代码] [代码][代码]})[代码][代码] [代码][代码].end()[代码]使用_.eq竟然查不出数据,去掉它就可以。
2019-07-24是不是没有访问权限?
云数据库不能通过变量条件查询和返回- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 [图片] 不能通过条件查询和返回数据
2019-07-22event.id是你需要更新文档的_id么?
云函数update别人插入的数据无效云函数: [图片] 调用的时候: [图片] 表结构: [图片]
2019-07-22