mcm*_*son 1 javascript mysql connection-pooling node.js
每次运行我的showData.js脚本时都会调用它
var pool = mysql.createPool({
Run Code Online (Sandbox Code Playgroud)
有没有办法在node.js服务器启动时创建连接池?
我已经尝试将createPool添加到server.js但是当我调用时,我似乎无法从我的showData.js脚本中访问该对象
pool.getConnection(function(err,connection){
Run Code Online (Sandbox Code Playgroud)
是否有必要在node.js服务器启动时启动连接池?
即使在调用connection.release并且脚本关闭后,mysql连接池是否仍然存在?
编辑 @Marco,我得到了ReferenceError:池没有定义.我知道问题是我没有将池拉入showData.js.根据node.js,可以多次加载模块.
来自https://nodejs.org/api/modules.html
高速缓存
模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.
多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.
如果要让模块多次执行代码,则导出一个函数,然后调用该函数.
这是我最新的设置:
LIB/dbpool.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'someco.com',
user : 'pinco',
password : 'pallino'
});
module.exports = pool;
Run Code Online (Sandbox Code Playgroud)
server.js
const pool = require('./lib/dbpool');
Run Code Online (Sandbox Code Playgroud)
showData.js
'use strict';
module.exports = router => {
router.route('/show').post((req, res) => {
pool.query('SELECT * FROM db.users', function(err, rows, fields) {
Run Code Online (Sandbox Code Playgroud)
我是否需要server.js和showData.js中的以下行?
const pool = require('./lib/dbpool');
Run Code Online (Sandbox Code Playgroud)
使用以下内容定义名为lib/dbpool.js的模块:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'someco.com',
user : 'pinco',
password : 'pallino'
});
module.exports = pool;
Run Code Online (Sandbox Code Playgroud)
在您的应用代码中,然后使用:
const pool = require('./lib/dbpool');
app.post('/your/app/url', (req, res) => {
pool.query('your query', function(err, rows, fields) {
if (err) throw err;
/* Manage your results here */
});
}
Run Code Online (Sandbox Code Playgroud)
pool.query实际执行:pool.getConnection()然后是connection.query()然后是connection.release()
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |