NodeJs Express Mongodb 实现简单用户注册、登入和查询功能

第一步:本机安装Mongodb,并设置为Windows 服务

1、Mongodb 官网下载地址:http://www.mongodb.org/downloads

2、添加Mongodb 的全局环境变量

3、将Mongodb 设置为Windows 服务,执行如下代码:

mongod -dbpath "C:\Program Files\MongoDB\data" -logpath "C:\Program Files\MongoDB\log\MongoDB.log" -install -serviceName "MongoDB"

第二步:切换至Express 项目存储路径,创建项目(ios)

cd C:\express_wrokspace

express ios

第三步:切换至项目(ios)所在文件目录,本地安装关联模块(body-parse、mongoose、ejs)

cd C:\express_wrokspace\ios

cnpm install body-parse  #body-parser 用来解析post请求的参数

cnpm install mongoose  #monodb 模块

cnpm install ejs              #视图模板引擎

第四步:编辑ios 项目中(package.json)文件集成mongoose 模块。在app.js 文件中,创建mongodb 的连接

在package.json 文件中

{
  "name": "ios",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "ejs": "~2.6.1",
    "morgan": "~1.9.0",
	"mongoose": "~5.4.20", #mongodb 模块
	"body-parser": "~1.18.3"
  }
}

在app.js 文件中,添加如下代码:

var mongoose = require('mongoose');            

mongoose.connect('mongodb://localhost/blog')     //连接本地数据库blog 

var db = mongoose.connection;

// 连接成功
db.on('open', function(){
    console.log('MongoDB Connection Successed');
});
// 连接失败
db.on('error', function(){
    console.log('MongoDB Connection Error');
});

添加登入和注册页面

在views 文件中添加login.html和register.html

login.html:

<h1>登录页面</h1>
   <div>
        <form action="/login" method="post">
            <p>
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" placeholder="用户名">
            </p>
            <p>
                <label for="password">密码 : </label>
                <input type="text" id="password" name="password" placeholder="密码">
            </p>
            <p>
                <input type="submit" value="登录">
            </p>
        </form>
    </div>

register.html:

<h1>注册页面</h1>
    <a href="/login"> 去登录 </a>
    <div>
        <form action="/register" method="post">
            <p>
                <label for="username">用户名</label>
                <input type="text" id="username" name="username" placeholder="用户名">
            </p>
            <p>
                <label for="password">密码 :</label>
                <input type="text" id="password" name="password" placeholder="密码">
            </p>
            <p>
                <label for="age">年龄 :</label>
                <input type="text" id="age" name="age" placeholder="年龄">
            </p>
            <p>
                <label for="address">地址 :</label>
                <input type="text" id="address" name="address" placeholder="地址">
            </p>
            <p>
                <input type="submit" value="注册">
            </p>
        </form>
    </div>

新增models模块

在根路径下新建 models 文件夹。 添加 users.js

// Models/users.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

// 声明一个数据集 对象
var userSchema = new Schema({
    username: {
        type: String,
        unique: true
    },
    password: {
        type: String
    },
    age: Number,
    address: String,
    createAt: {
        type: Date,
        default : Date.now()
    }
});
// 将数据模型暴露出去
module.exports = mongoose.model('users', userSchema);

编写路由

// routes/index.js
var express = require('express');
var router = express.Router();
var User = require('../models/users');

/* /根路径 跳转至login.html */
router.get('/', function(req, res, next) {
  res.sendfile('./views/login.html'); 
});
/* /a 跳转至register.html */
router.get('/a', function(req, res, next) {
  res.sendfile('./views/register.html'); 
});


router.get('/login', function (req, res) {
    res.render('login');
});
router.get('/register', function (req, res) {
    res.render('register');
});

// 这里的业务逻辑将写在 两个post 路由里 
router.post('/login', function (req, res) {
	var postData = {
        username: req.body.username,
        password: req.body.password
    };
    User.findOne({
        username: postData.username,
        password: postData.password
    }, function (err, data) {
        if(err) throw err;
        if(data){
            res.send('登录成功');
        }else{
            res.send('账号或密码错误')
        }
    } )
});
router.post('/register', function (req, res) {
        // 获取用户提交的信息
    var postData = {
        username: req.body.username,
        password: req.body.password,
        age: req.body.age,
        address: req.body.address
    };
    // 查询是否被注册
    User.findOne({username: postData.username}, function (err, data) {
        if (data) {
            res.send('用户名已被注册');
        } else {
            // 保存到数据库
            User.create(postData, function (err, data) {
                if (err) throw err;
                console.log('注册成功');
                res.redirect('/userList');      // 重定向到所用用户列表
            })
        }
    });
});

// 获取所有用户列表
router.get('/userList', function (req, res) {
    var userList = User.find({}, function (err, data) {
        if (err) throw  err;
        res.send(data)
    });
});

module.exports = router;

本项目还需要依赖body-parser模块 (用来解析post请求的参数),编辑package.json

{
  "name": "ios",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "ejs": "~2.6.1",         #依赖ejs 模块
    "morgan": "~1.9.0",
	"mongoose": "~5.4.20",   #依赖mongoose 模块
	"body-parser": "~1.18.3" #依赖body-parser模块
  }
}

在app.js 文件中,添加如下代码:

// app.js 

var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));

项目重新执行安装依赖:cnpm install

 

整体项目结构,效果展示:

 

  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于开发服务器端的应用程序。ExpressNode.js的一个快速、灵活和极简的Web应用程序框架。MongoDB是一个面向文档的NoSQL数据库。它将数据存储在JSON样式的文档中,具有强大的灵活性和可扩展性。 在Node.js中使用MongoDB,可以使用node-mongodb-native驱动程序。首先需要安装MongoDB,并确保其服务正在运行。然后,可以使用Monk库来实现Node.js和MongoDB的交互[2]。使用Monk,你可以使用简单的JavaScript代码来连接到MongoDB数据库,执行查询和更新操作。 下面是一个使用Monk连接到MongoDB的示例代码: ``` var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/nodetest1'); ``` 在上述代码中,我们使用`monk`模块连接到本地的`nodetest1`数据库。 通过使用Node.js、ExpressMongoDB,你可以构建强大的Web应用程序,实现数据的存储和检索功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [NodeJS+Express+MongoDB](https://blog.csdn.net/weixin_33712881/article/details/85842769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Node.js + Express + MongoDB教程](https://blog.csdn.net/boleban/article/details/39134661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值