nodojs - express框架项目连接MongoDB

一、安装mongoose模块

在项目下执行命令 npm install mongoose -save 安装保存到node_modules
也可以在package.json中配置"mongoose": “^4.4.12”,然后命令npm install 安装。https://github.com/Automattic/mongoose
在这里插入图片描述

二、配置

1.app.js

在app.js文件中

(1)导入

导入mongoose模块:
const mongoose = require(‘mongoose’);

(2)连接

// 创建数据库连接 
mongoose.connect('mongodb://localhost:27017/text') //连接本地数据库
// 数据库地址: 'mongodb://用户名:密码@ip地址:端口号/数据库';
// mongodb : 'mongodb://cha:root@localhost:27017/test'
// 实例化连接对象
let db = mongoose.connection;
db.on('error', console.error.bind(console, '连接错误:'));
db.once('open', (callback) => {
  console.log('MongoDB连接成功!!');
});

2.建立数据集模块

在项目根目录下新建文件夹schemas,这个是数据集模块,在模块下新建users.js文件

const mongoose = require('mongoose');

//申明一个mongoons对象
const UsersSchema = new mongoose.Schema({
// 定义要接收的字段
  name: String,
  password: String,
  meta: {
    createAt: {
      type: Date,
      default: Date.now() // 设置default可在数据库中没有值时传递默认值
    },
    updateAt: {
      type: Date,
      default: Date.now()
    }
  }
})

//每次执行都会调用,时间更新操作
UsersSchema.pre('save', function(next) {
  if(this.isNew) {
    this.meta.createAt = this.meta.updateAt = Date.now();
  }else {
    this.meta.updateAt = Date.now();
  }

  next();
})

//查询的静态方法
UsersSchema.statics = {
  fetch: function(cb) { //查询所有数据
    return this
        .find()
        // .sort('meta.updateAt') //排序
        .exec(cb) //回调
  },
  findById: function(id, cb) { //根据id查询单条数据
    return this
        .findOne({_id: id})
        .exec(cb)
  }
}

//暴露出去的方法
module.exports = UsersSchema

3.建立数据模型模块

const mongoose = require('mongoose')
const UsersSchema = require('../schemas/users') //拿到导出的数据集模块
const Users = mongoose.model('user', UsersSchema) // 编译生成Movie 模型 其中'user' 对应数据集合test下的users表
console.log(Users);
module.exports = Users

在这里插入图片描述

4.新建路由提供调用

在routes文件中的js文件中添加路由控制器代码,我是自定义一个demo.js
在这里插入图片描述
自定义route记得在app.js中引入

var demoRouter = require('./routes/demo');
app.use('/demo', demoRouter);

在demo.js中写入:

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');//导入mongoose模块
const users = require('../models/users');//导入模型数据模块

// 获取MongoDB数据库数据
router.get('/users', function (req, res) {
  users.fetch(function (err, users) {
    if (err) {
      console.log(err);
    }
    console.log(users);
    res.status(200).send(users)
  })
})
//
router.get('/getOne', function (req, res) {
  users.findById('5f7be3ea52f8abd63742c518',function (err, users) {
    if (err) {
      console.log(err);
    }
    res.status(200).send(users)
  })
})
//导出整个页面
exports = module.exports = router;

三、连接完成

浏览器访问对应route路径:
http://localhost:3000/demo/users
得到结果:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值