每次运行 showData.js 脚本时,它会调用:
我需要在server.js和showData.js两个文件中都添加以下这行代码吗?
var pool = mysql.createPool({
有没有办法在node.js服务器启动时创建连接池?
我尝试在server.js中添加createPool,但当我调用时似乎无法从我的showData.js脚本访问该对象。
pool.getConnection(function(err,connection){
在node.js服务器启动时,开启连接池是否必要?
即使调用connection.release并且脚本关闭,mysql连接池是否仍然存在?
编辑 @Marco,我得到了ReferenceError: pool is not defined.的错误信息。我知道问题在于我没有将pool引入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;
server.js
const pool = require('./lib/dbpool');
showData.js
'use strict';
module.exports = router => {
router.route('/show').post((req, res) => {
pool.query('SELECT * FROM db.users', function(err, rows, fields) {
我需要在server.js和showData.js两个文件中都添加以下这行代码吗?
const pool = require('./lib/dbpool');