这次我想使用res.render
来显示html作为数据库更新的成功。我做过好几次,但这次不起作用。它不是渲染html文件,只显示在chrome的控制台上。
我认为这是因为异步问题或重复响应造成的。我试过很多方法,但我无法解决它,所以指针赞赏。
当用户付费服务时,代码是相关的,提高用户的级别。
获取访问令牌=>验证=> res.render
app.post('/payment/validate', function(req, res, next){
// Get access token
request.post({
url : 'https://payment-company/get/token'
}, function(err, response, body) {
if(!err & response.statusCode == 200) {
var result = JSON.parse(body);
var accessToken = result.response.access_token;
// Validate payment (compare paid and would be paid)
request.get({
headers : { 'Authorization' : accessToken }
url : 'https://payment-company/find/paymentid'
}, function (err, response, body) {
if (!err && response.statusCode == 200){
var result = JSON.parse(body);
if (result.response.amount == req.body.price){
Members.findOne({id : req.user.id}, function(err, member){
// If no problem, update user level
member.level = 2;
member.save(function(err, result){
if (err) return next();
res.render('payment.view.result.ejs',
{
title : 'Success !',
description : 'level up.'
});
});
});
}
} else {
...
}
});
}
})
});
对不起详细的代码我试图缩短代码,没有问题,直到res.render,res.render将工作,但它不是显示页面,而只是它发送HTML代码到chrome的控制台。
答案 0 :(得分:1)
看起来对这些请求的工作方式有点误解。我认为你打算做什么:
您在前端开始编码的是另一种方法: