当我尝试连接到 mysql rds 代理时,出现连接超时。我遵循了这个教程
这是我的代码
import mysql2 from 'mysql2';
import AWS from 'aws-sdk';
const getConnection = async () => {
const signer = new AWS.RDS.Signer({
username: 'my-user-name',
hostname: 'proxy-name.proxy-someid.us-east-1.rds.amazonaws.com',
port: 3306
});
console.info('Connecting to MySQL proxy via IAM authentication');
const rdsSignerAuth = () => () => {
console.info('CALL rdsSignerAuth');
return signer.getAuthToken({
username: 'my-user-name',
region: 'us-east-1',
hostname: 'proxy-name.proxy-someid.us-east-1.rds.amazonaws.com',
port: 3306
});
};
let connection;
try {
connection = await mysql2.createConnection({
host: 'proxy-name.proxy-someid.us-east-1.rds.amazonaws.com',
user: 'my-user-name',
database: 'database-name',
connectTimeout: 60000,
ssl: { …Run Code Online (Sandbox Code Playgroud) 我的路线是这样的
import express from 'express'
import mysql from 'mysql2'
import { dbusername } from '../constant/db'
import { dbpassword } from '../constant/db'
import { dbname } from '../constant/db'
import { host } from '../constant/db'
let router = express.Router()
router.post('/', async (request, res, next) => {
try {
const { email, password } = request.body
const connection = await mysql.createConnection({
host: host,
user: dbusername,
password: dbpassword,
database: dbname,
})
const [
rows,
fields,
] = await connection.execute(
'SELECT `id` FROM `users` WHERE …Run Code Online (Sandbox Code Playgroud) 我想首先创建到我的数据库的连接(使用 mysql2),然后创建一个新的 Knex 实例。我在文档中找不到与此相关的任何内容。这可能吗?
所以,理想情况下我想做这样的事情(简化版本):
const mysql = require('mysql2');
const Knex = require('knex');
const connection = mysql.createConnection(connectionConfig);
await connection.connect();
const knex = new Knex({
client: 'mysql2',
connection: connection,
}):
Run Code Online (Sandbox Code Playgroud) 没有任何人有一个动手既DB-库经验-knex主场迎战mysql2?
经过一些谷歌搜索(例如在NPMCompare),我仍然很想知道,根据实际经验,这两种选择的优缺点是什么?
到目前为止,我清楚地看到使用knexover的唯一真正优势mysql2是它对 MSSQL、MySQL、PostgreSQL、SQLite3 和 Oracle 的普遍支持,而后者仅支持 MySQL,但由于目前我只关注 MySQL, thisknex的功能似乎不太相关。
我会考虑的参数:
Util.promisify包装、ESM/MJS支持);