express论坛报错

用express搭建论坛,在写发表文章时,遇到错误。文章保存到数据库然后重定向到首页,文章能够正常保存到数据库,但是一发表后,服务器就挂了,客户端报错:

clipboard.png

下面是我的post路由:

router.post('/',checkLog,function(req,res,next){
    var newPost = new Post({
        name:req.session.user.name,
        title:req.body.title,
        content:req.body.content
    });
    console.log(newPost);
    newPost.save(function(err,post){
        if(err){
            console.log("发表文章失败");
            res.redirect('/post');
        }
        console.log('发表文章成功');
        res.redirect('/');
    });
});

Post model:

var mongodb = require('./db');

function Post(post){
    this.name = post.name;
    this.title = post.title;
    this.content = post.content;
}
Post.prototype.save = function(callback){
    var date = new Date();
    var time = {
      date: date,
      year : date.getFullYear(),
      month : date.getFullYear() + "-" + (date.getMonth() + 1),
      day : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate(),
      minute : date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + 
      date.getHours() + ":" + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) 
    };
    var post = {
        name:this.name,
        title:this.title,
        content:this.content,
        time:time
    };
    mongodb.open(function(err,db){
        if(err){
            console.log("打开文章数据库失败");
            return callback(err);
        }
        db.collection("posts",function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            collection.insert(post,function(err,post){
                if(err){
                    mongodb.close();
                    return callback(err);
                }
                console.log("文章成功保存到数据库");
                callback(null,post);
            });
        });
    });

};
Post.get = function(name, callback) {
  //打开数据库
  mongodb.open(function (err, db) {
    if (err) {
      return callback(err);
    }
    //读取 posts 集合
    db.collection('posts', function(err, collection) {
      if (err) {
        mongodb.close();
        return callback(err);
      }
      var query = {};
      if (name) {
        query.name = name;
      }
      //根据 query 对象查询文章
      collection.find(query).sort({
        time: -1
      }).toArray(function (err, docs) {
        mongodb.close();
        if (err) {
          return callback(err);//失败!返回 err
        }
        callback(null, docs);//成功!以数组形式返回查询的结果
      });
    });
  });
};
/*
Post.get = function(callback){
    mongodb.open(function(err,db){
        if(err){
            console.log("打开数据库失败");
            return callback(err);
        }
        db.collection("posts",function(err,collection){
            if(err){
                return callback(err);
            }
            collection.find().toArray(function(err,posts){
                if(err){
                    return callback(err);
                }
                return callback(null,posts);
            });
        });
    });
};
*/
module.exports = Post;

求助,谢谢!

阅读 2.6k
2 个回答

后台有显示错误吗

一个数据库打开了还没有关闭,另外一个mongodb.open()就出错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题