Node.js 节点匹配动态url
我正在开发一个应用程序,用户可以自己添加房间 这意味着我必须将所有URL与以下内容匹配:Node.js 节点匹配动态url,node.js,mongodb,Node.js,Mongodb,我正在开发一个应用程序,用户可以自己添加房间 这意味着我必须将所有URL与以下内容匹配: module.exports = function(app) { app.route('/chat/:roomName') .get(room.list); }; 但是,在允许用户访问之前,我需要检查房间是否存在,我会使用它 exports.room = function(req, res, next) { Chat.find({ roomName: req.param("roomName")},
module.exports = function(app) {
app.route('/chat/:roomName')
.get(room.list);
};
但是,在允许用户访问之前,我需要检查房间是否存在,我会使用它
exports.room = function(req, res, next) {
Chat.find({ roomName: req.param("roomName")}, (err, chats) => {
if (chats == 0) {
res.redirect('/chat');
}
if (err) {
return next(err);
}
});
Message.find({ roomName: req.param("roomName") }, (err, messages) => {
if (err) {
return next(err);
} else {
res.render('chatroom', {title: req.param("roomName"), messages: messages});
}
});
};
当用户点击一个不存在的url/文件室时,会发生重定向,但随后我的应用程序崩溃,出现错误:发送后无法设置标题。
如何以正确的方式执行此操作?我首先从处理错误开始:
exports.room = function(req, res, next) {
Chat.find({ roomName: req.param("roomName")}, (err, chats) => {
if (err) {
return next(err);
}
res.redirect('/chat');
});
Message.find({ roomName: req.param("roomName") }, (err, messages) => {
if (err) {
return next(err);
}
res.render('/chatroom', {
title: req.param("roomName"),
messages: messages
});
}
});
}) 我首先从处理错误开始:
exports.room = function(req, res, next) {
Chat.find({ roomName: req.param("roomName")}, (err, chats) => {
if (err) {
return next(err);
}
res.redirect('/chat');
});
Message.find({ roomName: req.param("roomName") }, (err, messages) => {
if (err) {
return next(err);
}
res.render('/chatroom', {
title: req.param("roomName"),
messages: messages
});
}
});
}) 出现的错误是因为尝试在res.redirect之后运行res.render。您只能返回响应1次。尝试添加一个return语句
return res.redirect('/chat')
这是一样的..您得到的错误是因为您试图在res.redirect之后运行res.render。您只能返回响应1次。尝试添加一个return语句return res.redirect('/chat')
。。