Nodejs+Express+mongoose 连接Mongodb

陈实
2023-12-01

一、安装依赖

npm install mongoose --save 

二、连接MongoDB
在app.js 文件中

// 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');
});

三、创建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
    },
    createAt: {
        type: Date,
        default : Date.now()
    }
});
// 将数据模型暴露出去,users即为集合名称
// 如创建的集合名称不带s。则会补上s
module.exports = mongoose.model('users', userSchema);

四、添加路由
在routes文件夹添加users.js文件

// routes/users.js

var express = require('express');
var router = express.Router();
var usersModels = require('../models/users');

// 获取所有用户列表
router.get('/userList', function (req, res) {
	//查询users集合内所有用户列表
    var userList = usersModels.find({}, function (err, data) {
        if (err) throw  err;
        res.send(data)
    });
});

// 这里的业务逻辑将写在 两个post 路由里 
router.post('/login', function (req, res) {
    var postData = {
        username: req.body.username,
        password: req.body.password
    };
    //查询users集合是否有此账号密码
    usersModels.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
    };
    // 查询是否被注册
    User.findOne({username: postData.username}, function (err, data) {
        if (data) {
            res.send('用户名已被注册');
        } else {
            // 保存到数据库
            User.create(postData, function (err, data) {
                if (err) throw err;
                //请求/users/userList路由
                res.redirect('/users/userList');      // 重定向到所用用户列表
                res.send('注册成功');
            })
        }
    });
});

 类似资料: