背景:云开发、云函数。由于云开发的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
}
}
mysql这么用,会不会超过最大连接数,每次请求都创建一个链接
云函数入口函数后插入:context.callbackWaitsForEmptyEventLoop = false 但是不知道这句是什么意思,起什么作用。现在日志提示调用成功了。 望大神解释下这句代码的作用。
你好,我想问一下 在云函数里console.log 怎么看到自己打印的东西呀 我想了想 如果不返回到return 自己怎么看到呀
麻烦重试下,提供一个最新的requestId。
context.callbackWaitsForEmptyEventLoop = false
exports.main = async (event, context) => {
//链接mysql数据库,这里你可以链接你mysql中的任意库
try {
const wxContext = cloud.getWXContext()
var openid = wxContext.OPENID
const connection = await mysql.createConnection({
host: "***",
database: "bv_ccc",
port: 3306,
user: "888",
password: "888"
})
console.log('event=', event)
context.callbackWaitsForEmptyEventLoop = false;
}catch(err){
console.log("链接错误", err)
return err
}
}
你好,错误提示超过3秒,建议你增加云函数的限制运行时间