美文网首页我爱编程
Express+MongoDB 开发手记

Express+MongoDB 开发手记

作者: Michael_lpf | 来源:发表于2017-04-07 15:48 被阅读0次

本文纯属个人笔记,毫无指导倾向和价值!

使用 Express + mongodb 写了个基于 nodejs 的图书借阅的小demo。


总览

先在项目目录中安装相关模块:
npm install node
npm install express ejs
不想使用 jade 模板,于是使用了 ejs 直接书写 html 标签。html 文件全部放在 views 目录下。
CSS 是用 Sass 预处理来写的。CSS 文件全部放在 public 目录下。
最关键的逻辑处理,全部写在了 app.js 中。

Paste_Image.png

数据库

没怎么接触过数据库,MongoDB 看上去倒是更适合新手了。
它有的是 { "name":"mike", "id":"001" } 这样 json 格式的数据,这些数据被分组放在数据集(collection)中。

先说如何与 MongoDB 建立联系
  • step1:在需要的位置(我的位置是 /User/willli/Site )新建一个文件夹(我直接命名mongodb),将官方下载的压缩包解压到文件夹中。
  • step2:在 mongodb 文件夹下新建 data 文件夹,在 data 文件夹下 新建 db 文件夹用来存放数据。
  • step3:来到命令行终端,设置权限:
    sudo chown -R /User/willli/Site/mongodb/data
  • step4:进入到 mongodb 的 bin 目录,设置 db 文件夹为存储数据的路径:
    ./mongod --dbpath /User/willli/Site/mongodb/data/db
  • step5:打开浏览器输入:localhost:27017,看到“It looks like you are trying to access MongoDB over HTTP on the native drive port”,则说明与数据库建立了连接。
  • step6:打开一个新的终端,还是进入到 bin 目录下,输入 ./mongo ,至此便可进行对数据库的操作了。
再说 MongoDB 的基本操作语句

沿着上面 step6 启动数据库后,就可以使用基本语句对数据库进行操作了。

  • use myDatabase (myDatabase 是自己取的名字哦)创建一个数据库,easy-peasy 有木有,但还没完,需要即刻向这个新建的数据库中添加数据才算完成,否则这个数据库并没有建立。
    💡其实 use myDatabase 应该理解为使用、选择了一个数据库,如果没有名字叫做 myDatebase 的数据库,则尝试新建一个,当新建并添加了数据之后,myDatabase 也就建立成功了。
  • show dbs 查看数据库。
  • db.createCollection('myCollection')(myCollection 依然是自己取的名字)创建一个数据集合(表)。
  • show collections 查看当前数据库中的表。
  • db.myCollection.insert({"name":"Allen"}) 在 myCollection 表中添加了一条 {"name":"Allen"} 的数据。
  • db.myCollection.find() 查询 myCollection 中所有数据;
    db.myCollection.find({"name":"Allen"}) 查询 myCollection 中 name 为 Allen 的数据;
    db.myCollection.findOne() 查询 myCollection 中第一条数据;
    db.myCollection.findOne({"name":"Allen"}) 查询 myCollection 中 name 为 Allen 的第一条数据。
  • db.myCollection.updata({"name":"Allen"}, {$set: {"id":"008"}}) 改变 myCollection 中 name 为 Allen 的数据的 id 为 008。
  • db.myCollection.remove({"id":"008"}) 删除 myCollection 中 id 为 008 的数据。
在 nodejs 中操作 MongoDB:

首先要把 MongoDB 的连接配置弄好:

const mongodb = require('mongodb'),
     server = new mongodb.Server('localhost',27017,{auto_reconnect:true}),
     db = new mongodb.Db('mydb',server,{safe:true}),
     url = 'mongodb://localhost:27017/budiubook';

这里👆,细节我无法说的太清晰,大概就是引入 mongodb,设置服务端口、自动连接和用来访问的 URL。
然后,这里演示一个查询操作👇

mongodb.connect(url, function(err, db){
  if(!err){
    console.log('database connected !');
    db.collection('myCollection').find({"name":"Allen"}, function(err, res){
        console.log(res);
    })
  }
  else{
    console.log('ooops');
  }
})

Express

那么 Express 框架大致如何使用呢?
我在项目中的 app.js 文件中实现。

const express = require('express'),
          port = process.env.PORT || 3000,
          app = express();
app.listen(port);

👆主要做的事情就是引用 express,设置端口,监听端口。并且以 app 引用了 express(),这样使用 Express 方法时可以这样书写 app.name() 了。
现在来到项目根目录位置,输入 node app.js 便启动了项目。

使用的几个“部件”

  • 静态资源路径部件:
const path = require('path');
app.use(express.static(path.join(__dirname, 'public')));
  • ejs 引擎:
    用来解析 html 文件
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');
  • 表单验证部件:
    其实是使用 request.body 来接收前台传递的数据
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
  • 访问控制部件:
    存储用户的登录状态
const session = require('express-session');
app.use(session({
    secret:'secret',
    resave:true,
    saveUninitialized:false,
    cookie:{
        maxAge:1000*60*30 //过期时间设置(单位毫秒)
    }
}));

配置好后使用如下代码存储

app.use(function(req, res, next){
    res.locals.user = req.session.user;
    next();
});

主要方法

使用了 get 和 post 两个方法完成所有页面渲染和数据接收。

  • get 方法
app.get('/index', function(request, result){
  result.render('index', {
    data: "username"
  })
})

👆可以渲染 index.html 页面了,并且在页面中可以访问 data 👇

<span><%= data %></span>
  • post 方法
    假设有一个 ajax 请求发送了数据,便可以使用 post 方法来接收👇
app.post('/login', function(request, result){
  let name = request.body.name;
  console.log(name);
})

相关文章

网友评论

    本文标题:Express+MongoDB 开发手记

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