首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点MySQL无服务器框架

节点MySQL无服务器框架
EN

Stack Overflow用户
提问于 2016-03-13 10:36:13
回答 5查看 4.3K关注 0票数 2

如何使用mysql连接和无服务器的framework.connection应该在我的组件函数中可用,而无需每次在组件函数中创建mysql连接。

试过像这样

代码语言:javascript
复制
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的适当文档。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-15 11:28:16

我正在写我自己问题的答案。

database.js文件夹中创建component/lib文件

database.js码

代码语言:javascript
复制
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文件中创建这样的对象

代码语言:javascript
复制
var connection = require("../lib/database.js");

可以使用连接变量在component/lib/index.js中编写mysql查询

代码语言:javascript
复制
module.exports.respond = function(event, cb) {

    var query="SELECT * from table_name";

    connection.query(query,function(err,rows) {

    })
};
票数 1
EN

Stack Overflow用户

发布于 2016-03-15 08:07:37

我相信您在基于Serverless Framework的项目中创建了一个包含多个lambda函数的组件。现在,您希望编写MySQL连接代码,以便可以在该组件的所有lambda函数中重用此代码块。

如果这是ask,那么Serverless确实在您的组件目录中提供了一个“自由”文件夹,您可以利用该文件夹来编写可重用的公共代码逻辑。由于您的组件有一个基于NodeJS的运行时,组件文件夹中应该有一个"index.js“文件-

代码语言:javascript
复制
your_serverless_project_directory/component_name/lib/index.js

您要做的第一件事是将MySQL连接代码逻辑添加到index.js中的函数/方法中。

Serverless应该已经为您在所有lambda函数的handler.js代码中包括了这个完整的lib/文件夹,如下所示-

代码语言:javascript
复制
var lib = require('../../lib');

因此,您要做的下一件/最后一件事是重用连接函数/方法(在组件中的所有lambda函数中),如下所示-

代码语言:javascript
复制
module.exports.handler = function(event, context) {
  lib.mySQLConnection();
};

希望这有帮助,让我知道它是如何进行的。

票数 0
EN

Stack Overflow用户

发布于 2016-03-23 00:45:18

为了建立起正常的戈斯瓦米的答案:

您已经在连接中指定了数据库。我的lambda每个都需要不同的数据库,所以在连接代码中只需关闭数据库:

代码语言:javascript
复制
var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'hostname',
    user     : 'username',
    password : 'password'
    // no database here
});

connection.connect();
module.exports = connection;

然后使用一个奇怪的命名函数来更改每个lambda函数中的数据库:

代码语言:javascript
复制
connection.changeUser({database: database}, function(err) {
    if (err) { throw err; }
});

connection.query(sql, function(err, rows, fields) {
    // etc
}

您还可以查看如何使用数据库连接池

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35969178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档