作者amazing2014 (別斷線拜託)
看板Ajax
標題[問題] Node如何把MySQL查詢結果存到var再render
時間Wed Mar 30 15:13:27 2016
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
→ mmis1000: 你需要的是dependency injection,徹底把存取db分到其他 03/30 18:06
→ mmis1000: 檔案吧 03/30 18:06
→ amazing2014: 對,謝謝你! 成功跑出來了,這樣組合更好管理程式碼 03/30 18:34
推 johnny9144: 樓上正解,我個人是喜歡 一種存取一個檔案,然後再由 03/30 22:58
→ johnny9144: 一個檔案把這些存取Db的檔案require進來,最後router 03/30 22:58
→ johnny9144: 只要require這一個檔案就可以呼叫所有存取Db的functi 03/30 22:58
→ johnny9144: on 也方便管理,提供參考 03/30 22:58
→ amazing2014: 我懂了,感覺有點像 Facade Pattern,謝謝 03/31 18:24