如何使用mysql连接和无服务器的framework.connection应该在我的组件函数中可用,而无需每次在组件函数中创建mysql连接。
试过像这样
var mysql = require('mysql');
module.exports.respond = function(event, cb) {
var pool = mysql.createPool({
connectionLimit : 100,
host : 'hostname',
user : 'username',
password : 'password',
database : 'databasename',
debug : false
});
var message='';
pool.getConnection(function(err,connection){
if(err) {
message='Could not connect to database';
} else {
message="Database is connected";
}
var response = {
message: message
};
return cb(null, response);
});
};但是上面的代码只适用于当前的功能,想要在无服务器框架中为mysql连接做一些常见的事情,却找不到关于如何在无服务器框架中使用mysql的适当文档。
发布于 2016-03-15 11:28:16
我正在写我自己问题的答案。
在database.js文件夹中创建component/lib文件
database.js码
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'hostname',
user : 'username',
password : 'password',
database : 'databasename'
});
connection.connect();
module.exports = connection;在component/lib/index.js文件中创建这样的对象
var connection = require("../lib/database.js");可以使用连接变量在component/lib/index.js中编写mysql查询
module.exports.respond = function(event, cb) {
var query="SELECT * from table_name";
connection.query(query,function(err,rows) {
})
};发布于 2016-03-15 08:07:37
我相信您在基于Serverless Framework的项目中创建了一个包含多个lambda函数的组件。现在,您希望编写MySQL连接代码,以便可以在该组件的所有lambda函数中重用此代码块。
如果这是ask,那么Serverless确实在您的组件目录中提供了一个“自由”文件夹,您可以利用该文件夹来编写可重用的公共代码逻辑。由于您的组件有一个基于NodeJS的运行时,组件文件夹中应该有一个"index.js“文件-
your_serverless_project_directory/component_name/lib/index.js您要做的第一件事是将MySQL连接代码逻辑添加到index.js中的函数/方法中。
Serverless应该已经为您在所有lambda函数的handler.js代码中包括了这个完整的lib/文件夹,如下所示-
var lib = require('../../lib');因此,您要做的下一件/最后一件事是重用连接函数/方法(在组件中的所有lambda函数中),如下所示-
module.exports.handler = function(event, context) {
lib.mySQLConnection();
};希望这有帮助,让我知道它是如何进行的。
发布于 2016-03-23 00:45:18
为了建立起正常的戈斯瓦米的答案:
您已经在连接中指定了数据库。我的lambda每个都需要不同的数据库,所以在连接代码中只需关闭数据库:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'hostname',
user : 'username',
password : 'password'
// no database here
});
connection.connect();
module.exports = connection;然后使用一个奇怪的命名函数来更改每个lambda函数中的数据库:
connection.changeUser({database: database}, function(err) {
if (err) { throw err; }
});
connection.query(sql, function(err, rows, fields) {
// etc
}您还可以查看如何使用数据库连接池。
https://stackoverflow.com/questions/35969178
复制相似问题