gpt4 book ai didi

mysql - 如何使用 Node.js 和 mysql2 连接到数据库来调试 Azure Function

转载 作者:搜寻专家 更新时间:2023-11-01 00:50:15 25 4
gpt4 key购买 nike

在尝试找出 Azure 函数(基于 Node.js)可以连接到我们的 mysql 数据库(也托管在 Azure 上)时遇到一些问题。我们正在使用 mysql2 并几乎完全遵循教程( https://learn.microsoft.com/en-us/azure/mysql/connect-nodejs 和类似的)这是调用的重点:

const mysql = require('mysql2');
const fs = require('fs');

module.exports = async function (context, req) {
context.log('JavaScript HTTP trigger function processed a request.');

if (req.query.fname || (req.body && req.body.fname)) {

context.log('start');
var config = {
host:process.env['mysql_host'],
user: process.env['mysql_user'],
password: process.env['mysql_password'],
port:3306,
database:'database_name',
ssl:{
ca : fs.readFileSync(__dirname + '\\certs\\cacert.pem')
},
connectTimeout:5000
};

const conn = mysql.createConnection(config);
/*context.log(conn);*/

conn.connect(function (err) {
context.log('here');
if (err) {
context.error('error connecting: ' + err.stack);
context.log("shit is broke");
throw err;
}
console.log("Connection established.");

});

context.log('mid');
conn.query('SELECT 1+1',function(error,results,fields) {
context.log('here');
context.log(error);
context.log(results);
context.log(fields);
});

基本上,遇到 conn.connect(function(err)... 不返回任何内容的问题 - 没有错误消息,没有日志等。 conn.query 的工作原理类似。

一切似乎都设置正确,但我什至不知道下一步该去哪里解决问题。有没有人以前遇到过这种情况或有如何处理的建议?

谢谢!!本

最佳答案

我相信 Baskar 共享的链接涵盖了在本地调试您的函数

对于你的函数,你可以做一些改变来提高性能。

  1. 在函数代码之外创建与数据库的连接,否则每次都会创建一个新实例并连接。此外,您还可以启用池以重用连接,并且不超过运行 Azure Functions 的沙箱的 300 个限制。
  2. 将 Promise 与 async/await 一起使用

您基本上可以将代码更新为这样的内容

const mysql = require('mysql2/promise');
const fs = require('fs');

var config = {
host: process.env['mysql_host'],
user: process.env['mysql_user'],
password: process.env['mysql_password'],
port: 3306,
database: 'database_name',
ssl: {
ca: fs.readFileSync(__dirname + '\\certs\\cacert.pem')
},
connectTimeout: 5000,
connectionLimit: 250,
queueLimit: 0
};
const pool = mysql.createPool(config);

module.exports = async function(context, req) {
context.log('JavaScript HTTP trigger function processed a request.');

if (req.query.fname || (req.body && req.body.fname)) {
context.log('start');

const conn = await pool.getConnection();

context.log('mid');

await conn.query('SELECT 1+1', function(error, results, fields) {
context.log('here');
context.log(error);
context.log(results);
context.log(fields);
});

conn.release();
}
};

PS:我还没有测试过这段代码,但我相信这样的东西应该可以工作

关于mysql - 如何使用 Node.js 和 mysql2 连接到数据库来调试 Azure Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com