美文网首页
nodeJS&&Express搭建多人博客(笔记)

nodeJS&&Express搭建多人博客(笔记)

作者: 小金子_web | 来源:发表于2017-10-26 11:20 被阅读0次

    首先项目地址:https://github.com/panzhi/node_blog

    安装环境

    忽略安装nodeJs;
    安装express:npm install express -g (-S);
    安装express应用生成器: npm install express-generator -g (express脚手架工具)
    生成项目:express -e ejs yourProjectName (ejs:模板引擎,yourProjectName:项目名字)

    mongodb安装

    安装mongodb与下载
    LINUX启动服务:./mongod --dbpath ../blog/

    express 4.x版本问题

    1.session中间件已经不再内置,需要单独引用

    var session = require('express-session');
    var MongoStore = require('connect-mongo')(session);
    
    app.use(session({
        secret: 'foo',
        store: new MongoStore(options)
    }));
    
    1. 修改上步后仍然报错throw new Error('Connection strategy not found');
    app.use(session({
      secret: settings.cookieSecret,
      key: settings.db,//cookie name
      cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
      resave: false,
      saveUninitialized: true,
      store: new MongoStore({
        /*db: settings.db,
        host: settings.host,
        port: settings.port*/
        url: 'mongodb://localhost/blog'
      })
    }));
    

    需再MongoStore中添加url属性;

    db.js中链接数据库端口问题

    var settings = require('../settings'),
        Db = require('mongodb').Db,
        Connection = require('mongodb').Connection,
        Server = require('mongodb').Server;
    module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}));
    

    其中的Connection.DEFAULT_PORT为数据库服务的默认端口,改成27017,即可;

    win中启动mongo服务:./mongod --config "***\mongo.conf"|| ./mongod --config ../mongo.conf

    bodyParser中已经不在express中集成,并且bodyParser中已经不再包含上传功能,需要单独安装multer并引用,index.js中的示例:

    var multer = require('multer');
    var upload = multer({dest:'../public/uploads/'});  //定义文件上传的位置
    router.post('/upload',upload.any(), function (req, res, next) {
      for (var i in req.files) {
        if (req.files[i].size == 0) {
          //使用同步方式删除一个文件
          fs.unlinkSync(req.files[i].path);
          console.log('Successfully removed an empty file!')
        }else{
          var target_path= './public/images/' + req.files[i].originalname;
          // 使用同步方式重命名一个文件
          fs.renameSync(req.files[i].path,target_path);
          console.log('Successfully renamedafile!');
        }
      }
      req.flash('success','文件上传成功!');
      res.redirect('/upload');
    });
    

    其中multer基于 bodyParser开发,所以需要再其后引用;upload.any()再api中有多种方法,对应使用!

    ——————————————————————————————————————————————

    mongo 的部分操作:

    1. use blog; //使用blog数据库;
    2. show dbs; //显示数据库;
    3. show tables; //显示表格;
    4. db.tables.find(); //查找tables所有数据;
    5. db.tables.findOne(); //查询一条数据;
    6. db.tables.remove({}); //删除表格所有数据;

    相关文章

      网友评论

          本文标题:nodeJS&&Express搭建多人博客(笔记)

          本文链接:https://www.haomeiwen.com/subject/dwdelxtx.html