TypeError: res.render is not a function
TypeError: res.render is not a function
我遇到了 nodejs 的问题 res.render,它告诉我它不是函数。我查看了有关堆栈溢出的其他帖子,但它们没有解决我的问题。
问题来了....
我的应用程序有一个控制器,名为 auth.js
在其中,它导出了这个名为 updateDiscount
的函数
exports.updateDiscount = (req,res,next) =>{
const { discounts, email, filename, decide } = req.body;
switch(decide){
case "Approve":
approve(discounts,email,filename,decide, req, res);
break;
case "Deny":
deny(discounts,email,filename,decide, req, res);
break;
case "Defer":
defer(discounts,email,filename,decide, req, res);
break;
default:
return res.render('adminGrantPortal', {
message: 'You selected an option from the -- Approve/Deny/Defer -- menu which does not exist. Please contact your system administrator'
});
}
}
接下来我有一个工作方法叫做批准。因此,当控制器收到批准消息(通过开关中的变量 decide )时,它将批准数据库中的用户折扣。同样,此方法有效...
approve = (discounts, email, filename, decide, req, res) =>{
// get discount based on name
mysqlConnection.query('SELECT id FROM discounts WHERE name=?', [discounts], async (error, results)=>{
if(error){
return res.render('adminGrantPortal',{
message: 'One or more fields either, do not exist in the database, or were filled out incorrectly during your last action.'
});
}
console.log('ayayay');
console.log(results[0]);
let discountID = results[0].id;
// Set staus in files table
mysqlConnection.query("UPDATE files SET status='approved' WHERE email=? AND filename=?", [email,filename], async (error,results)=>{
if(error){
return res.render('adminGrantPortal',{
message: 'Could not update users status, because it is not found in the database.'
});
}
// Add to discounts_users
mysqlConnection.query('INSERT INTO discounts_users (email,discountID) VALUES (?,?)',[email,discountID], async (error,results)=>{
if(error){
return res.render('adminGrantPortal', {
message: 'Cannot update the database, maybe this user already has this discount.'
});
}
return res.render('adminGrantPortal', {
message: 'Approved discount eligibility successfully.'
});
});
});
});
}
现在,我有一个拒绝方法,这意味着当 req.body.decide = 'deny' 时它会出现在这里。这种方法给了我错误,特别是 console.log('success');
之后的那一行
deny = (discounts, email, filename, req, res) =>{
// Set staus in files table
mysqlConnection.query("UPDATE files SET status='denied' WHERE email=? AND filename=?", [email,filename], async (error,results)=>{
if(error){
console.log('error');
return res.render('adminGrantPortal',{
message: 'Could not update users status, because it is not found in the database.'
});
}
});
console.log('success');
return res.render('adminGrantPortal', {
message: 'Denied discount eligibility successfully.'
});
}
为什么要这样做?
我已经缩小了一些不是的范围。
- 我相信从 mysql 连接返回的 'results' object 与我的 res object,这将控制 headers.
- 我相信这与我的 mysql 没有任何关系,因为我删除它看起来像这样...
deny = (discounts, email, filename, req, res) =>{
console.log('success');
return res.render('adminGrantPortal', {
message: 'Denied discount eligibility successfully.'
});
}
但是我仍然得到同样的错误....
TypeError: res.render is not a function
at deny (C:\Users\Andrew\Desktop\Project\racf\client\controllers\auth.js:187:16)
at exports.updateDiscount (C:\Users\Andrew\Desktop\Project\racf\client\controllers\auth.js:127:13)
at Layer.handle [as handle_request] (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:174:3)
谁能帮我弄清楚我做错了什么?
调用 deny
函数时,您将 req
作为第 5 个参数传递,但您试图在函数内部将其用作 res
。在 filename
.
之后将 decide
添加到 deny
函数的参数列表
deny = (discounts, email, filename, decide, req, res) => {
// ...
}
我遇到了 nodejs 的问题 res.render,它告诉我它不是函数。我查看了有关堆栈溢出的其他帖子,但它们没有解决我的问题。
问题来了....
我的应用程序有一个控制器,名为 auth.js
在其中,它导出了这个名为 updateDiscount
的函数exports.updateDiscount = (req,res,next) =>{
const { discounts, email, filename, decide } = req.body;
switch(decide){
case "Approve":
approve(discounts,email,filename,decide, req, res);
break;
case "Deny":
deny(discounts,email,filename,decide, req, res);
break;
case "Defer":
defer(discounts,email,filename,decide, req, res);
break;
default:
return res.render('adminGrantPortal', {
message: 'You selected an option from the -- Approve/Deny/Defer -- menu which does not exist. Please contact your system administrator'
});
}
}
接下来我有一个工作方法叫做批准。因此,当控制器收到批准消息(通过开关中的变量 decide )时,它将批准数据库中的用户折扣。同样,此方法有效...
approve = (discounts, email, filename, decide, req, res) =>{
// get discount based on name
mysqlConnection.query('SELECT id FROM discounts WHERE name=?', [discounts], async (error, results)=>{
if(error){
return res.render('adminGrantPortal',{
message: 'One or more fields either, do not exist in the database, or were filled out incorrectly during your last action.'
});
}
console.log('ayayay');
console.log(results[0]);
let discountID = results[0].id;
// Set staus in files table
mysqlConnection.query("UPDATE files SET status='approved' WHERE email=? AND filename=?", [email,filename], async (error,results)=>{
if(error){
return res.render('adminGrantPortal',{
message: 'Could not update users status, because it is not found in the database.'
});
}
// Add to discounts_users
mysqlConnection.query('INSERT INTO discounts_users (email,discountID) VALUES (?,?)',[email,discountID], async (error,results)=>{
if(error){
return res.render('adminGrantPortal', {
message: 'Cannot update the database, maybe this user already has this discount.'
});
}
return res.render('adminGrantPortal', {
message: 'Approved discount eligibility successfully.'
});
});
});
});
}
现在,我有一个拒绝方法,这意味着当 req.body.decide = 'deny' 时它会出现在这里。这种方法给了我错误,特别是 console.log('success');
之后的那一行
deny = (discounts, email, filename, req, res) =>{
// Set staus in files table
mysqlConnection.query("UPDATE files SET status='denied' WHERE email=? AND filename=?", [email,filename], async (error,results)=>{
if(error){
console.log('error');
return res.render('adminGrantPortal',{
message: 'Could not update users status, because it is not found in the database.'
});
}
});
console.log('success');
return res.render('adminGrantPortal', {
message: 'Denied discount eligibility successfully.'
});
}
为什么要这样做?
我已经缩小了一些不是的范围。
- 我相信从 mysql 连接返回的 'results' object 与我的 res object,这将控制 headers.
- 我相信这与我的 mysql 没有任何关系,因为我删除它看起来像这样...
deny = (discounts, email, filename, req, res) =>{
console.log('success');
return res.render('adminGrantPortal', {
message: 'Denied discount eligibility successfully.'
});
}
但是我仍然得到同样的错误....
TypeError: res.render is not a function
at deny (C:\Users\Andrew\Desktop\Project\racf\client\controllers\auth.js:187:16)
at exports.updateDiscount (C:\Users\Andrew\Desktop\Project\racf\client\controllers\auth.js:127:13)
at Layer.handle [as handle_request] (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:275:10)
at Function.handle (C:\Users\Andrew\Desktop\Project\racf\node_modules\express\lib\router\index.js:174:3)
谁能帮我弄清楚我做错了什么?
调用 deny
函数时,您将 req
作为第 5 个参数传递,但您试图在函数内部将其用作 res
。在 filename
.
decide
添加到 deny
函数的参数列表
deny = (discounts, email, filename, decide, req, res) => {
// ...
}