nodeJs配合mongodb写接口,从入门到放弃

1创建 mongo服务(win10系统)

  • 1.下载mongodb解压到本地

image.png

    1. 创建存放数据的data和存放日志的log文件
  • 3.安装mongo服务(一定要在管理员的模式下运行dos命令)

 mongod --install --dbpath d:\Mongodb\data --logpath d:\Mongodb\logs\mongodb.log
复制代码
  • 4运行不报错,并且在服务中查看MongoDB服务已经已经存在
  • 5启动/停止mongodb服务
net start mongodb / net stop mongodb
复制代码
  • 6校验,dos中输入mongo就进入到数据库中,并且操作数据库
mongo
复制代码

说明:这种创建的数据库是是没有带权限的

安装带权限的

  1. 安装指令
 mongod --install --dbpath d:\Mongodb\data --logpath d:\Mongodb\logs\mongodb.log --auth
复制代码

2.当你设置带权限的时候,你发现原来的数据库你访问不到了 输入 show dbs没东西出来,或者 use admin 中show collections 是无权限访问的
3.设置一个用户的角色,在mongodb中有个 admin的数据库,在admin 中设置一个超级管理员 账号和密码等

    use admin
    db.createUser({
        "user":"test",
        "pwd":"test1234",
        "roles":[
            {
                "role":"root",
                "db":"admin"
            }
           
        ]
    })
复制代码

4.登录超级管理管理员账号,登录完后此时show dbs就可以访问到数据库

   use admin
   db.auth('账号',密码)
复制代码

5.创建test数据库 (切换到不存在的数据库不会报错,会隐式创建一个test库),创建一个test账号对test库可以读写的,这里的创建是在node连接数据库时需要操作的那个库

use test
 db.createUser(
  {
    user: "test",
    pwd: "test123",
    roles: [ { role: "readWrite", db: "test" } ]
  }
)
复制代码

6 可视化工具操作,连接数据库,这里输入超管的账号和密码

image.png

image.png

连接本地guanwang数据库

const mongoose=require('mongoose');
const connectDB=async()=>{
    mongoose.connect(
            "mongodb://chenhui:chenhui@localhost:27017/guanwang",
            {
                useNewUrlParser:true,
                useUnifiedTopology:true,
                useCreateIndex:true,
                useFindAndModify:false
            },err=>{
            if(err){
                console.log('----------------')
                console.log('数据库连接失败',err)
                console.log('----------------')
            }else{
             console.log('数据库连接成功')   
            }
            
    });
}

module.exports=connectDB
复制代码

用node的express做服务,并且使用monogoose操作mongoDB数据库

const express = require('express')
const dotenv = require('dotenv')
const router=require('./routes/router.js')
const connectDB=require('./config/db')
dotenv.config({ //按需加载不同的环境变量
    path:'./config/config.env'
})

connectDB() // 连接本地数据库
const app=express();
const PORT=process.env.PORT||3000;

app.use(express.json())
app.use('/api',router)


app.listen(PORT,console.log(`server running ${process.env.PORT}`))
复制代码

路由模块 这里只做了根路径的(获取数据和保存数据)

const express=require('express');
 //创建路由容器
 const  router = express.Router();
 const {commonResGet,commonResPost}=require('../controllers')
 
 //主页
 //http://1ocalhost:5000/api
 router.route('/').get(commonResGet).post(commonResPost);;

 

module.exports=router;

复制代码

controllers 中用数据模型去查找数据库中的数据,或者保存数据到数据库中

const homeListModel=require('../models/homeList')
exports.commonResGet=async (req,res,nex)=>{
    let json=await homeListModel.find();
    res.status(200).json({success:true,msg:'成功',data:json})
}
exports.commonResPost=async (req,res,nex)=>{
    const params=await homeListModel.create(req.body);
    res.status(200).json({success:true,data:params,msg:'创建成功'})
}
复制代码

数据模型


const mongoose =require('mongoose');
const homeListModel=new mongoose.Schema({
        type:String,
        url:String,
        classify:String
})
module.exports=mongoose.model('homeListModel',homeListModel)
复制代码

当执行存储数据时,本地数据库guanwang中自动新增一张名字为homeListModel的表

image.png

此时post 创建数据每次成功插入一条数据,数据库中都会更新

image.png

image.png

获取数据

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享