美文网首页程序员
node+MongoDB+实战

node+MongoDB+实战

作者: baiqingchun | 来源:发表于2018-01-12 12:25 被阅读0次

    写在前面

    关于 Nodejs,相信看这篇的文章的小伙伴已经了解了不少,有一些了 Nodejs 基础。但是 Nodejs 如何应用,如何用 Nodejs 搭建在服务器上,我想好多小伙伴想知道,在这里分享我的心得体会,希望对你的工作学习有所帮助。 服务器的搭建有很多种,比如 Java,PHP,而我首选 Node.js。为什么?因为快。Node.js 入门快,相比其他语言更容易进入后台的世界;安装快,配置简单;命令简单易学。但是对于许多童鞋来说,学习了 Node.js 的基础知识,却不知道该怎样应用 Node.js ,如何实践。

    这次我就帮助童鞋快速入门,尽快应用起 Node.js,在实战中学习 Node.js,对工作和学习都有更好的帮助。

    1、利用基于 Node.js 的 Express 快速搭建项目。
    2、介绍 Express 项目结构。
    3、学习如何连接 MongoDB 数据库,利用 Node.js 操作 MongoDB 数据库。
    4、Express 的项目是 .jade 页面,如何改为 .html 页面。
    5、学习如何修改目录结构,使其可以在真实的项目中应用

    1.利用 Nodejs 快速搭建项目

    首先安装 Express

    npm install express-generator -g    
    
    

    用Express快速生成项目

    express demo
    cd demo
    npm install
    
    

    运行项目,检测是否搭建成功

    npm run start
    
    

    在浏览器打开http://localhost:3000 ,这个地址是Express快速搭建项目默认之地址,在bin目录下的www文件里,如图

    企业微信截图_ef9c5153-4d13-463c-94e7-be4170e11f7a.png

    项目搭建完毕,是不是很快。这就是我喜欢Node的地方

    2.Express目录结构介绍

    • bin:项目的启动文件,默认www
    • node_modules:存放项目所有的依赖库,默认body-parser、cookie-parser、debug、jade、express、morgan、serve-favicon。
    • public:静态资源文件夹,默认images、javascripts、stylesheets。
    • routes:路由文件
    • views:页面文件,jade模板,默认error.jade、index.jade、layout.jade。本人平常用的html模板,下面将讲下如何修改
    • package.json:项目依赖配置,做过java后台的,可以跟maven对比下,差不多。
    • app.js:应用核心配置文件,项目入口,程序入口。
    enter image description here

    3.连接MongDB数据库

    打开终端,运行命令

    
     npm install mongolass -s
    
    

    在bin目录下添加文件,mongo_base.js,里面的代码如下

    const Mongolass = require('mongolass');
    const mongolass = new Mongolass();
    
    exports.db = { mongolass: mongolass };
    const db = exports.db;
    
    let connected = [];
    exports.OnConnected = function (fn) {
        if (fn) {
            connected.push(fn);
        }
    };
    
    //'mongodb://localhost:27017/testdb'
    exports.connectDB = function (conn) {
        return mongolass.connect(conn).then(function () {
    
            //================USER RELATED==================
            db.test = mongolass.model('test', {
                name:{type:'string'},
    
            });
            db.test.insert({name:'test'}).exec()
    
            connected.forEach(function (oneFn) {
                if (oneFn) {
                    oneFn();
                }
            });
    
        });
    
    };
    
    

    在www文件里添加代码

    require('./mongo_base').connectDB('mongodb://localhost:27017/testdb');
    
    

    我们的MongDB连接成功。 启动电脑的MongDB,然后重启项目。 下面检查是否我们成功了。 打开终端,然后运行命令,进入到mongdb。

    mongo
    
    

    然后运行命令,查看是否添加上数据库testdb

    show dbs
    
    
    enter image description here

    好了,我们的项目MongoDB数据库添加完毕。

    4.Express的项目是.jade页面,如何修改为.html的页面。

    进入根目录,输入命令

    npm install ejs -s
    
    

    找到根目录下的app.js,加入代码

    var ejs = require('ejs');  //引入的ejs插件
    app.engine('html', ejs.__express);//设置html引擎
    app.set('view engine', 'html');//设置视图引擎
    
    

    在app.js里,去掉代码

    app.set('view engine', 'jade');
    
    

    重启服务,在view里添加html页面,同时在routes里或者在app.js里添加控制器,就可以访问html文件了。实例代码如下,在浏览器访问http://localhost:3000/b

    enter image description here

    5.如何修改目录,使其可以在真实的项目中应用

    在这个项目中我们想以mvc的模式开发。那么如何修改目录呢,可以达到我们的目的。下面注意我说的,新建目录和新建文件,不要弄混。

    1.首先新建目录,auth,把上面的建的mongo_base.js放在这个目录里。然后新建文件index.js,代码如下

    let MG = require('./mongo_base.js');
    
    exports.db = MG.db;
    exports.connectDB = MG.connectDB;
    exports.OnConnected = MG.OnConnected;
    
    

    2.修改bin目录下www文件里的关于mongo_base.js的引入调用。改后如下

    enter image description here

    3.在routes下新建两个目录controller,db。

    • controller:就是我们的mvc的c,用于控制我们整个程序,我们的逻辑代码在这里编写。
    • db:就是我们的mvc中的m,用于数据库表的创建。

    把index.js、users.js放在controller的目录里。请注意修改app.js代码里关于这两个文件的路径引入。

    4.在db目录下新建文件user.js。用于在数据库存储用户。修改后目录如下图。

    enter image description here

    5.在user.js里编写代码

    
    const db = require('../../auth').db;
    exports.OnConnected = require('../../auth').OnConnected;
    
    const onConnect = function () {
        const mongolass = db.mongolass;
    
        //===============DEVICE RELATED==================
    
        // socket.io room. Connect it with `http://{server}/{roomId}`
        db.user = mongolass.model('user', {
            nickname:{type:'string'},
        });
    
    };
    
    exports.OnConnected(onConnect);
    exports.db = db;
    
    

    6.修改controller下的index.js,修改后如下

    var express = require('express');
    var router = express.Router();
    const MG = require('../db/user');
    let dbTable;
    MG.OnConnected(function () {
        dbTable = MG.db.user;
    });
    
    /* GET home page. */
    router.get('/', function(req, res, next) {
      res.render('index', { title: 'Express' });
    });
    router.get('/test', function(req, res, next) {
           return dbTable.insert({nickname:'abc'}).exec().then(function () {
               res.send('存储成功');
           })
    
    });
    
    module.exports = router;
    
    

    7.重新启动项目,在浏览器中输入http://localhost:3000/test ,如下图!

    enter image description here

    写在后面

    这篇文章每写一步,我都会自己运行,希望看到这篇文章的童鞋可以入门express的实战,并在实战中创建自己的架构。

    相关文章

      网友评论

        本文标题:node+MongoDB+实战

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