我定義的必要app.js
,所有參數MySQL連接如何能在routes/
作出缺席可見的其他腳本,而不需要重新定義或MySQL的參數,只是用client.query(..)
?快車 - 傳遞MySQL連接到腳本
0
A
回答
3
你可以注入MySQL連接到其他的腳本是這樣的:
app.js
var mysqlConnection = new Conection(params);
require('controller/main.js)(mysqlConnection);
main.js
module.exports = function(mysqlConnection) {
// You can access your mysql connection here
};
UPDATE:
你可以注入幾個變量同樣的方式。
app.js
var mysqlConnection = new Conection(params);
var news = require('model/news.js)(app, mysqlConnection);
news.list(function(err, news) {
// Do something
});
news.js
module.exports = function(app, mysqlConnection) {
var methods = {};
// mysql connection and app available from here
methods.list = function(cb) {
mysqlConnection.list(function(err, data) {
cb(err, data);
});
};
return methods;
};
3
我用一個模式是建立我db
對象中:另外你是否需要這樣仍然可以導出從模塊的方法模塊一次並將其導出:(我們稱之爲utils/mySQL.js
)
//I haven't used real mysql in node so excuse the pseudo-syntax:
var db = require('mysql-driver-thingy');
db.connect('localhost', 'sqlport', options...);
db.otherSetupFunctions();
console.log("Finished db setup. You should only see this message once! Cool.");
module.exports = db;
然後我可以在任何我需要它的地方都可以使用db
對象。由於require
被緩存,所以這實際上不會多次調用設置方法。
在app.js:
var db = require('./utils/mySQL.js');
...
在模型/ user.js的:
var db = require('../utils/mySQL.js');
...
最後一個選擇,這是不推薦的,是污染全局命名空間。這似乎是你後真正的答案:
//set up your db
...
// and now make it available everywhere:
global.client = db.client
現在你可以神奇地使用客戶端對象中所有的模塊,甚至不需要它。
有很多原因全局是不好的,但:
- 如果你的代碼和其它代碼中定義全局變量,它們可能會出現衝突和相互覆蓋。
- 很難找到你所定義的
db
/client
對象等
相關問題
- 1. 傳遞一個mysql連接到功能
- 2. 從bash傳遞參數到mysql腳本
- 3. mysql:將pwd傳遞到sql腳本
- 4. Shell腳本連接到MySQL服務器
- 5. 在c腳本中連接到mysql?
- 6. 的Android連接到MySQL(PHP腳本)
- 7. 將連接字符串從PHP傳遞到perl腳本
- 8. 傳遞SQL變量連接SQL查詢到PHP腳本
- 9. vs 2012中的MySQL連接器快遞
- 10. Nodejs無法使用快遞連接到MySQL
- 11. 參數傳遞給MySQL的腳本
- 12. 將快遞連接到React webpack項目
- 13. 如何傳遞參數到shell腳本
- 14. 在jython腳本之間傳遞變量並共享SQL連接
- 15. 連接VB腳本和SQL Plus,將值傳遞給查詢
- 16. 連接腳本
- 17. PHP腳本不會連接MySQL
- 18. 連接mysql數據庫與tcl腳本
- 19. mysql不能連接php腳本?
- 20. 快車 - 傳遞客戶端數據到API,並從API
- 21. mysql連接:什麼更快?
- 22. 連接安全的PHP上傳腳本
- 23. iOS - 如何在快車道快照中傳遞構建參數
- 24. 連接表到購物車
- 25. 將多個參數從shell腳本傳遞到mysql查詢
- 26. 將參數從批處理文件傳遞到MYSQL腳本
- 27. 我的快車應用程序無法連接到mongodb
- 28. 傳遞SQL Server連接(節點到C#)
- 29. 的unique_ptr並傳遞到相關連接
- 30. 傳遞連接表到Razor視圖
的可能的複製[如何正確通過MySQL連接路線與express.js(http://stackoverflow.com/questions/16800418/how-to-properly-pass-mysql-connection-to-routes-with-express-js) – edjroot 2016-03-28 23:21:35
@EdJr什麼..你甚至看過問題之間的日期差異嗎? 2012年8月7日和2013年5月28日...你看到的區別對吧? – Gntem 2016-03-29 06:19:47
我舉報此問題的原因很充分。[This](https://meta.stackoverflow.com/a/315475/3089595)很好地總結了推理,並且它具有(有用的)鏈接來重複自身的事實是另一個很好的例子。 – edjroot 2016-03-29 06:46:20