我有一個句柄模板,其中包含兩個部分和一個從上下文中填充的數據。在ExpressJS中使用promise,handlebar和middleware
<h1>Welcome to {{title}}</h1>
<div id="views">
<div id="place">{{> place}}</div>
<div id="player">{{> player}}</div>
</div>
現在的ExpressJS路線上我做了以下內容:
var express = require('express');
var router = express.Router();
var gameDal = require('../app/DAL/gameRepository');
router.use('/', (req, res, next) => {
if(!res.locals.gameContext) res.locals.gameContext = {};
gameDal.getGame(0).then(game => {
res.locals.gameContext.player = game.player;
res.locals.gameContext.place = game.place;
req.gameTitle = game.title;
next();
});
});
router.get('/', (req, res) => {
res.render('home', { "title": req.gameTitle });
});
module.exports = router;
的代碼工作正常,但如果我把「下一個()」語句出來的「然後」回調,這兩個部分都與收到的數據正確填充,但「gameTitle」值未定義。
換句話說以下不會因爲模板被渲染的時候替換模板中的{{title}}值時,req.gameTitle值爲「undefined」:
router.use('/', (req, res, next) => {
if(!res.locals.gameContext) res.locals.gameContext = {};
gameDal.getGame(0).then(game => {
res.locals.gameContext.player = game.player;
res.locals.gameContext.place = game.place;
req.gameTitle = game.title;
});
next();
});
所以我問題是:
- 怎麼會諧音被填入數據和含模板是不是?
- 在promise回調中保留「next()」語句會產生什麼影響?
- 如果承諾被拒絕會怎樣?
謝謝。
@SergioRomero - 這個回答你的問題? – jfriend00