[問題] Node如何把MySQL查詢結果存到var再render

看板Ajax作者 (別斷線拜託)時間8年前 (2016/03/30 15:13), 8年前編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
route.js: ------------------------------------------------- var express = require('express'); var mysql = require('mysql'); var router = express.Router(); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '********', database: 'MyDatabase' }); router.get('/', function (req, res) { var sql = 'SELECT * FROM MyTable;'; connection.query(sql, function (err, rows) { if (err) console.log(err); res.render('index', { title: 'Index', model: rows }); }); }); module.exports = router; ------------------------------------------------ 我想問有沒有辦法把query的結果存到一個var result; 試過這樣做但是非同步還沒查好下一行程式就繼續了 目的只想把route.js作純粹的路由 但因為要等查詢完成再render route.js和db.js程式碼就必須混在一起 沒辦法做到關注點分離 請教各位,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.105.116.41 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1459322011.A.EB6.html ※ 編輯: amazing2014 (120.105.116.41), 03/30/2016 15:14:05

03/30 18:06, , 1F
你需要的是dependency injection,徹底把存取db分到其他
03/30 18:06, 1F

03/30 18:06, , 2F
檔案吧
03/30 18:06, 2F

03/30 18:13, , 3F
http://pastebin.com/G3npB0pL 像是這樣,把細節藏起來
03/30 18:13, 3F

03/30 18:34, , 4F
對,謝謝你! 成功跑出來了,這樣組合更好管理程式碼
03/30 18:34, 4F

03/30 22:58, , 5F
樓上正解,我個人是喜歡 一種存取一個檔案,然後再由
03/30 22:58, 5F

03/30 22:58, , 6F
一個檔案把這些存取Db的檔案require進來,最後router
03/30 22:58, 6F

03/30 22:58, , 7F
只要require這一個檔案就可以呼叫所有存取Db的functi
03/30 22:58, 7F

03/30 22:58, , 8F
on 也方便管理,提供參考
03/30 22:58, 8F

03/31 18:24, , 9F
我懂了,感覺有點像 Facade Pattern,謝謝
03/31 18:24, 9F
文章代碼(AID): #1M-toRws (Ajax)