本文介紹了如何使node.js MySQL連接池在啟動時可用的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我的showData.js腳本每次運行時都會調用
var pool = mysql.createPool({
是否有辦法在node.js服務器啟動時創建連接池?
我已嘗試將createPool添加到server.js,但在調用時似乎無法從showData.js腳本訪問該對象
pool.getConnection(function(err,connection){
node.js服務器啟動時是否需要啟動連接池?
MySQL連接池是否仍然存在即使在調用Connection.Release并且腳本關閉后也是如此?
編輯@marco,我收到ReferenceError:未定義池。我知道問題是我沒有將池拉入showData.js。根據node.js的說法,可以多次加載一個模塊。
發件人https://nodejs.org/api/modules.html
緩存
模塊在第一次加載后被緩存。這
表示每個調用Require(‘foo’)都將獲得
返回完全相同的對象,如果它將解析為相同的
文件。對Required(‘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');
推薦答案
定義一個名為lib/dbpool.js的模塊,內容如下:
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host : 'someco.com',
user : 'pinco',
password : 'pallino'
});
module.exports = pool;
在您的應用程序代碼中使用:
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 */
});
}
pool.ery實際執行:pool.getConnection(),然后是Connection.Query(),然后是Connection.Release()
這篇關于如何使node.js MySQL連接池在啟動時可用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,