我有一个句柄模板,其中包含两个部分和一个从上下文中填充的数据。在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