Я пытаюсь получить доступ к своей базе данных Google Cloud SQL в моих функциях Firebase.Я следовал документации Google , но это не очень хорошо и оставляет много информации.
Я добавил код из документации в мой файл src\index.ts
и заполнил свои данные:
const mysql = require('mysql');
const connectionName =
process.env.INSTANCE_CONNECTION_NAME || 'test';
const dbUser = process.env.SQL_USER || 'test';
const dbPassword = process.env.SQL_PASSWORD || 'test';
const dbName = process.env.SQL_NAME || 'test';
const mysqlConfig = {
connectionLimit: 1,
user: dbUser,
password: dbPassword,
database: dbName,
};
if (process.env.NODE_ENV === 'production') {
mysqlConfig.socketPath = `/cloudsql/${connectionName}`;
}
// Connection pools reuse connections between invocations,
// and handle dropped or expired connections automatically.
let mysqlPool;
exports.mysqlDemo = (req, res) => {
// Initialize the pool lazily, in case SQL access isn't needed for this
// GCF instance. Doing so minimizes the number of active SQL connections,
// which helps keep your GCF instances under SQL connection limits.
if (!mysqlPool) {
mysqlPool = mysql.createPool(mysqlConfig);
}
mysqlPool.query('SELECT NOW() AS now', (err, results) => {
if (err) {
console.error(err);
res.status(500).send(err);
} else {
res.send(JSON.stringify(results));
console.log("Connected!")
}
});
// Close any SQL resources that were declared inside this function.
// Keep any declared in global scope (e.g. mysqlPool) for later reuse.
};
Затем я попытался опубликовать это, чтобы посмотреть, будет ли он работать, и получилошибка:
Модуль 'mysql' не указан как зависимость в package.json
Поэтому я установил mysql
, выполнив npm install mysql
и я запустил его снова, и на этот раз я получаю сообщение об ошибке:
src / index.ts (23,15): ошибка TS2339: свойство 'socketPath' не существует для типа '{connectionLimit: number;пользователь: строка;пароль: строка;база данных: строка;} '
Что происходит?Я правильно установил это?Я очень потерян, и документы, кажется, не предлагают много решений.Спасибо!