当前位置: 首页 > 面试题库 >

如何在Node.js中的单个文件中提供mysql数据库连接

郭均
2023-03-14
问题内容

我需要为模块提供mysql连接。我有这样的代码。

var express = require('express'),
app = express(),
server = require('http').createServer(app);

var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : '127.0.0.1',
    user     : 'root',
    password : '',
    database    : 'chat'
});

connection.connect(function(err) {
    if (err) {
        console.error('error connecting: ' + err.stack);
        return;
    }
});

app.get('/save', function(req,res){
    var post  = {from:'me', to:'you', msg:'hi'};
    var query = connection.query('INSERT INTO messages SET ?', post, function(err, result) {
        if (err) throw err;
    });
});

server.listen(3000);

但是我们如何为所有模块提供一次mysql连接。


问题答案:

您可以创建一个数据库包装器,然后需要它。节点的require每次都返回模块的相同实例,因此您可以执行连接并返回处理程序。从Node.js文档中:

如果它将解析为相同的文件,则对require(’foo’)的每次调用都将获得完全相同的返回对象。

您可以创建db.js

var mysql = require('mysql');
var connection = mysql.createConnection({
    host     : '127.0.0.1',
    user     : 'root',
    password : '',
    database : 'chat'
});

connection.connect(function(err) {
    if (err) throw err;
});

module.exports = connection;

然后在您的中app.js,您只需要它。

var express = require('express');
var app = express();
var db = require('./db');

app.get('/save',function(req,res){
    var post  = {from:'me', to:'you', msg:'hi'};
    db.query('INSERT INTO messages SET ?', post, function(err, result) {
      if (err) throw err;
    });
});

server.listen(3000);

这种方法使您可以抽象出任何连接详细信息,包装您想要在db整个应用程序中公开和需要的其他任何内容,同时由于节点需求的工作原理而保持与数据库的一个连接:)



 类似资料:
  • 问题内容: 我想使用Web服务在远程Web服务器上的MYSQL数据库中插入文件。 我的问题是:什么类型的表列(例如varchar等)将存储文件?对于文件,insert语句会有所不同吗? 问题答案: BLOB数据类型最适合存储文件。 请参阅:如何使用PHP将.pdf文件作为BLOB存储到MySQL中? MySQL BLOB参考手册有一些有趣的注释

  • 问题内容: 默认情况下,备份整个数据库。我需要在MySQL中备份单个表。可能吗?如何还原? 问题答案: 从.sql转储并还原单个表 倾倒 从远程数据库转储 进一步参考: http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html 恢复 或一行 转储并从压缩(.sql.gz)格式还原单个表 图片来源:John McGr

  • 问题内容: 我的信息分布在几个数据库中,并希望使用PHP将所有信息放到一个网页上。我想知道如何在单个PHP网页上连接到多个数据库。 我知道如何使用以下方法连接到单个数据库: 但是,我可以仅使用多个“ mysql_connect”命令来打开其他数据库吗?如果我确实连接了多个数据库,PHP如何知道要从哪个数据库中提取信息? 问题答案: 警告: 自php 5.5起不推荐使用功能,自php 7.0起不推荐

  • 问题内容: 在PHP中执行类似的操作,我可以成功登录到MySQL服务器。我已经安装了ODBC连接器。但是在上面的VBA代码中,我失败了。出现错误。(请参阅存在错误的代码) 问题答案: Ranjit的代码导致了与Tin报告相同的错误消息,但是在使用我正在运行的ODBC驱动程序更新Cn.open之后起作用。检查“ ODBC数据源管理器”中的“驱动程序”选项卡。我的说“ MySQL ODBC 5.3 U

  • 问题内容: 我该怎么做? 我以为,我可以从数据库中读取某些内容,但是看起来太多了,是否有类似的东西? 问题答案: 您需要做的就是启动一个应用程序,如果未连接该应用程序将失败。您可以尝试的其他方法是在shell上尝试以下操作-

  • 问题内容: 通过Node MongoDB本机驱动程序使用Nodejs和MongoDB。需要检索一些文档,并进行修改,然后将其保存回来。这是一个例子: 具有异步性质,如果更新文档的过程花费更长的时间,则当光标到达文档末尾时,数据库连接将关闭。并非所有更新都保存到数据库。 如果省略,则所有文档均正确更新,但应用程序挂起,永不退出。 我看到一则帖子建议使用计数器跟踪更新次数,当回落到零时,然后关闭数据库