zoukankan      html  css  js  c++  java
  • node服务端搭建学习笔记

    咳咳,终于迈出这一步了...这篇文章将是边学边写的真正笔记...用于mark下学习过程中的点滴~

    开篇先把我学习参考的文章来源给出,以表示对前人的尊敬:

    https://github.com/nswbmw/N-blog/wiki/_pages

     

    Step01

    首先,先安装一堆东西,当然我默认的已经把 node 给装好了,接下来要安装的,是项目开发过程中用到的东东~

    至于下面装的是什么东东,不知道的自己百度去,这种概念性问题不在笔记之列。

     

    全局安装 express

    install -g express-generator

     

    全局安装 supervisor

    npm install -g supervisor

     

    下载并安装 mongoDB

    官网地址:https://www.mongodb.org/downloads

    mongoDB 也有可视化工具,名为 Robomongo,官网地址:http://www.robomongo.org/

     

     

    Step02

    上面几个玩意都安装好后,环境已备,可以开始码字了。

    先创建一个 express 项目吧,在你想创建项目的目录下执行下面命令(projectName 是你要创建的项目名称):

    express -e projectName

    项目创建后,进入刚建好的项目根目录,执行

    npm install

    安装项目依赖的 node 模块

    等模块安装好之后,你就可以执行下面的命令,运行项目程序了

    supervisor ./bin/www

    执行上面命令后,打开浏览器,在地址栏中输入 http://127.0.0.1:3000/ 然后看到浏览器里显示 Express 的欢迎界面,说明项目创建运行成功。

     

     

    Step03

    接下来,我们要链接数据库,并尝试数据写入和数据读取

    首先,我们先在项目根目录找到 package.json 文件

    然后打开文件,找到 dependencies 在加上下面几个项目依赖模块

    "bson": "~0.4.19",
    "connect-flash": "~0.1.1",
    "connect-mongo": "~0.4.1",
    "express-session": "~1.9.1",
    "mongodb": "~1.4.15"

    然后再执行

    npm install

    安装上面添加的几个依赖模块

     

    打开 app.js 将它修改成如下:

    var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');
    
    var routes = require('./routes/index');
    var session = require('express-session');
    var MongoStore = require('connect-mongo')(session);
    var flash = require('connect-flash');
    
    var app = express();
    
    //设置模版引擎
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');
    
    app.set(flash());
    
    //设置标题栏小图标
    //app.use(favicon(path.join(__dirname, 'favicon.ico')));
    
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: false}));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));
    
    routes(app);
    
    //404异常处理
    app.use(function (req, res, next) {
        var err = new Error('Not Found');
        err.status = 404;
        next(err);
    });
    
    //打印错误信息
    app.use(function (err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: {}
        });
    });
    
    module.exports = app;

     

    然后打开 routes/index.js 将它修改成如下:

    var User = require('../modules/user');
    
    module.exports = function(app) {
        app.get('/', function (req, res, next) {
            res.render('index', { title: 'Express' });
        });
    
        app.get('/saveUser', function (req, res, next) {
            User.save({
                name: 'Mike',
                password: '123456',
                email: 'qwe@163.com'
            }, function (err, user) {
                res.send('保存用户数据成功!');
            });
        });
    
        app.get('/getUser', function (req, res, next) {
            User.get('Mike', function (err, user) {
                res.send({
                    email: user.email
                });
            });
        });
    };

     

    routes/users.js 已经无用,可以删掉。

    接下来,在根目录下创建一个 modules 目录,然后在 modules 目录下再创建一个 dataService 目录,所有和数据操作相关的 js 模块都将放在 modules/dataService 目录下

    接下来,在 modules/dataService 下创建两个文件 conn.js 和 user.js

     

    conn.js 的代码如下:

    var settings = {
            cookieSecret: 'myProject',
            db: 'dataBaseName',
            host: 'localhost',
            port: 27017
        },
        mongodb = require('mongodb'),
        Db = mongodb.Db,
        Server = mongodb.Server;
    
    module.exports = new Db(settings.db, new Server(settings.host, settings.port), {
        safe: true
    });

     

    user.js 的代码如下:

    var mongodb = require('./conn');
    
    var User = {};
    
    //存储用户信息
    User.save = function (opts, callback) {
        //要存入数据库的用户文档
        var user = {
            name: opts.name,
            password: opts.password,
            email: opts.email
        };
        //打开数据库
        mongodb.open(function (err, db) {
            if (err) {
                return callback(err);//错误,返回 err 信息
            }
            //读取 users 集合
            db.collection('users', function (err, collection) {
                if (err) {
                    mongodb.close();
                    return callback(err);//错误,返回 err 信息
                }
                //将用户数据插入 users 集合
                collection.insert(user, {
                    safe: true
                }, function (err, user) {
                    mongodb.close();
                    if (err) {
                        return callback(err);//错误,返回 err 信息
                    }
                    callback(null, user[0]);//成功!err 为 null,并返回存储后的用户文档
                });
            });
        });
    };
    
    //读取用户信息
    User.get = function (name, callback) {
        //打开数据库
        mongodb.open(function (err, db) {
            if (err) {
                return callback(err);//错误,返回 err 信息
            }
            //读取 users 集合
            db.collection('users', function (err, collection) {
                if (err) {
                    mongodb.close();
                    return callback(err);//错误,返回 err 信息
                }
                //查找用户名(name键)值为 name 一个文档
                collection.findOne({
                    name: name
                }, function (err, user) {
                    mongodb.close();
                    if (err) {
                        return callback(err);//失败!返回 err 信息
                    }
                    callback(null, user);//成功!返回查询的用户信息
                });
            });
        });
    };
    
    module.exports = User;

     

    嗯嗯嗯...思考了好一会,代码部分应该已经完成了。但别急着运行,还有一些准备工作需要做。

    打开 mongoDB 的安装根目录(拿我自己举例,我安装的是32位版本,安装根目录为:C:Program Files (x86)MongoDB 2.6 Standard)

    在该目录下创建一个文件夹,名称就是你的数据库名

    然后启动命令行工具,进入 mongoDB 的安装根目录下的 lib 目录,然后执行下面命令:

    mongod --dbpath ../dataBaseName/

    dataBaseName 指是你的数据库名

    以上命令的意思是:设置 dataBaseName 文件夹作为我们工程的存储目录并启动数据库

    注意:一定要先创建目录(或者已经存在目录),再执行上面的命令,才能成功启动数据库,否则会报错

     

    数据库成功启动之后,我们再重新启动一下我们的 node 服务端程序,就用上文提到过的命令:

    supervisor ./bin/www

    然后打开浏览器,访问 http://127.0.0.1:3000/saveUser ,就能看到界面上显示 “保存用户数据成功!

    再访问 http://127.0.0.1:3000/getUser ,就能看到  {"email":"qwe@163.com"}

    再使用 Robomongo 看看数据库是否真的成功写入了信息,如果成功找到和代码中一样的数据,说明写入成功了~~

    OK~至此,我们就实现了一个最基础的服务端读写数据库应用雏形了。

    补刀几句,这篇笔记通篇没有多少任何关于概念以及工具的说明。

    因为它就是一篇执行记录笔记,记录搭建一个 最基础的服务端读写数据库应用雏形 的各个步骤。

    如果要了解上面提到的工具以及代码的含义,请自己另行百度,或者去细看我开篇时给出的文章(里面各种概念说明非常详细)

     

  • 相关阅读:
    Objective-C 资源收藏
    坑爹的高德地图API
    nginx的location root alias指令以及区别
    Java Swing 界面中文乱码问题解决(Idea环境)
    不同的国家/地区与语言缩写代码
    IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    请重视!请重视!请重视!百度熊掌号之搜索资源平台体验
    php7带来的性能升级
    详解Asp.Net Core 2.1+的视图缓存(响应缓存)
    Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  • 原文地址:https://www.cnblogs.com/czf-zone/p/4913565.html
Copyright © 2011-2022 走看看