服务器上的模板呈现不正确

我从我的服务器获取意外的行为。 这也很奇怪。

我有2条路线基本上做同样的事情,除了一个细节在每个路线中更改。

这是第一条路线:

var mailer = require("../mailer.js"); var moment = require("moment"); var riot = require("riot"); var router = express.Router(); router.post('/personType1s/:key', function(req, res, next) { var personType1s = req.body.personType1s; var tourny = req.body.tourny; var personType1_keys = []; var updates = {}; personType1s.forEach(function(person, index, arr){ // Unique key for the tournament var personType1_key = firebase.database().ref().push().key; personType1_keys.push(personType1_key); var opts = { tourny: tourny, personType1: person, personType1_key: personType1_key } console.log('in the personType1 route'); var html = riot.render(require("../views/emailTemplates/personType1Invite.tag"), opts) mailer(person.email, html) console.log('html is ', html); }) // Add the invited participants to the database Promise.all(create_invites(tourny, personType1s, personType1_keys)).then(function(){ res.send('success'); }); }); module.exports = router; function create_invites(tourny, personType1s, personType1_keys){ var pArr = []; var invites = {}; var updates = {}; personType1s.forEach(function(person, index, array){ var personType1_key = personType1_keys[index]; var member_obj = {}; member_obj['email'] = person.email; member_obj['invite_key'] = personType1_key; member_obj['name'] = person.name; member_obj['type'] = person.type; updates["member_tournaments/" + encodeURIComponent(person.email).replace(/\./g, '%2E') + "/" + tourny.key] = tourny; updates["tournament_members/" + tourny.key + "/personType1s/" + personType1_key] = member_obj; pArr.push(firebase.database().ref().update(updates, function(error){ if(error) console.log(error); })); }) return pArr; } 

其他路线有完全相同的代码,除了这一行:

 var html = riot.render(require("../views/emailTemplates/personType1Invite.tag"), opts) 

不同的是,第二条路线呈现出不同的观点:

 var html = riot.render(require("../views/emailTemplates/personType2Invite.tag"), opts) 

我遇到的问题是,当第一个路由被调用(即personType1),路线将实际执行,但是,呈现的HTML实际上是来自其他路线(即personType2)中使用的模板。 我知道这是事实b / c我打印一个特定于每个路线(例如console.log(“路线1”)),然后打印HTML模板的声明。 打印语句validation我在正确的路线,并validation错误的 HTML正在呈现。

换句话说,路由1被调用,一切都按照它应该执行,但是当riot.render(...personType1Invite.tag) ,它将会渲染personType2Invite.tag

现在这里变得奇怪了。 这只发生我已经使用该应用程序来调用route1和route2之后。 如果我只调用route1和route1,它将继续按预期工作。 当我调用route1和route2时,它将按预期工作,但是对route1的每一个后续调用将始终从personType2模板中呈现html,即使路由1实际上执行了并且该路由中的html模板明确指向personType1,不是personType2。 此外,如果我禁用路由2(即personType2),则路由1将始终成功呈现正确的模板。

编辑这里是第二条路线的代码:

 var mailer = require("../mailer.js"); var moment = require("moment"); var riot = require("riot"); var router = express.Router(); // var tag = require("../views/emailTemplates/personType2Invite.tag"); router.post('/:key', function(req, res, next) { // {name, email, type} var personType2s = req.body.personType2s; // See body of file for tourny object structure var tourny = req.body.tourny; var personType2_keys = []; var updates = {}; personType2s.forEach(function(person, index, arr){ // Unique key for the tournament var personType2_key = firebase.database().ref().push().key; personType2_keys.push(personType2_key); var opts = { tourny: tourny, personType2: person, personType2_key: personType2_key } var html = riot.render(require("../views/emailTemplates/personType2Invite.tag"), opts) mailer(person.email, html) }) // Add the invited participants to the database Promise.all(create_invites(tourny, personType2s, personType2_keys)).then(function(){ res.send('success'); }); }); module.exports = router; function create_invites(tourny, personType2s, personType2_keys){ var pArr = []; var invites = {}; var updates = {}; personType2s.forEach(function(person, index, array){ var personType2_key = personType2_keys[index]; var member_obj = {}; member_obj['email'] = person.email; member_obj['invite_key'] = personType2_key; member_obj['name'] = person.name; member_obj['type'] = person.type; // ie member_tournaments/<email_address>/tourny_key updates["member_tournaments/" + encodeURIComponent(person.email).replace(/\./g, '%2E') + "/" + tourny.key] = tourny; updates["tournament_members/" + tourny.key + "/personType2s/" + personType2_key] = member_obj; pArr.push(firebase.database().ref().update(updates, function(error){ if(error) console.log(error); })); }) return pArr; }