Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点匹配动态url_Node.js_Mongodb - Fatal编程技术网

Node.js 节点匹配动态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")},

我正在开发一个应用程序,用户可以自己添加房间

这意味着我必须将所有URL与以下内容匹配:

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')
。。