安装mongoDB服务器和可视化工具

服务器下载地址:mongodb服务器下载,推荐下载4~5之间的版本,千万不要下载4以下的版本。下面是选版本并且下载的位置。

MongoDB解压版 mongodb 免费_MongoDB解压版

下载完毕后,安装即可,安装的时候别取消勾选MongoDB Compass,勾上并且安装,这个是数据库可视化工具,是免费的,功能也比较完善。

使用前了解

数据库是由一张张表组成。
每张表由一行行数据组成。
一行数据的表现形式是一个对象,对象的每个字段对应表的每个字段。

mongoose的基本用法及在项目中如何使用

基本的增删改查语法

// 向数据库追加一行数据
// create(doc:Object | Array,[callback:(err,res)=>{}]):Promise
table.create({name:'e',age:'1'})
.then((res)=>{}) 
.catch((err)=>{}) 
 // 向数据库追加多行数据
table.create([{name:'a',age:'1'},{name:'b',age:'2'},{name:'c',age:'3'}])

// delete(condition:Object,[[callback:(err,res)=>{}]]):Promise
// 删除满足条件的第一条数据
table.deleteOne({name:'a'})
.then((res)=>{}) 
.catch((err)=>{}) 
// 删除满足条件的第所有数据
table.delete({age:18},(err,res)=>{})

// update(condition:Object,newdoc:Object,[[callback:(err,res)=>{}]]):Promise
// 更新满足条件的第一条数据
table.updateOne({age:18},{age:19})
.then((res)=>{}) 
.catch((err)=>{}) 
// 更新满足条件的所有数据
table.update()

/* find(codition:Object|RegExp|{$where:()=>boolean},
[project:Object],[options:{limit:number,skip:number,sort:Object}],
[callback:(err,res)=>{}]):Promise
*/
/*
 project:查询结果所具备的字段,例子:{name:1,sex:0,age:0},查询结果只有name字段。1表示出现,0表示不出现
 limit:限制查询结果的条数,例子:limit:5,查询的条数最多为5条。
 skip:跳跃查询的条数,例:skip:10,跳过数据库前10条查询
 sort:查询结果按某个字段升序或者降序排列,例:sort:{age:-1},结果按age降序排列。-1表示降序,1表示升序
*/
// 查询满足条件的第一条数据
table.findOne({name:'a'})
.then((res)=>{}) 
.catch((err)=>{}) 
// 查询满足条件的所有数据
table.find({age:18},(err,res)=>{})

安装

yarn add mongoose

使用(这里配合express服务器使用)
1.连接数据库。创建文件linkdb.js,编写如下代码:

const mongoose=require("mongoose")

const dbUrl='mongodb://localhost/goodsmanage'    // 数据库地址。本机地址+数据库名称
const options={ useNewUrlParser: true,useUnifiedTopology: true  }  // 解决警告的问题

function linkdb(rel,rej){

mongoose.connect(dbUrl,options,function(err){
    if(err)  rej(err)         
    else
    if(!err) { rel();  console.log(dbUrl+" is connected")}    // 如果无误,打印连接成功
}) 
}

module.exports=new Promise(linkdb)

2.创建数据库表。创建文件tables.js,编写如下代码

const mongoose=require("mongoose")

//限制文档的格式,数据类型(type)必须指定
const Userlimit=new mongoose.Schema({
    username:{
        type:String,
        required:true     // 内置校验。必填的意思
    },
    email:{
        type:String,
        required:true
    },
    psd:{
        type:String,
        required:true,
        trim:true          // 内置修饰符。去除空格和换行的作用
    },
    rolename:{
        type:String,
        required:true
    },
    menukeys:{
        type:Array,
        required:true
    },
    createtime:{
        type:String,
        default:Date.now(),  //设置默认值
    },
})
const Users=mongoose.model("Users",Userlimit)

const Rolelimit=new mongoose.Schema({
    rolename:{
        type:String,
        required:true
    },
    createtime:{
        type:String,
        default:Date.now(),
        required:true
    },
    authtime:{
        type:String,
        default:'',
    },
    author:{
        type:String,
        default:'',
    },
    menukeys:{
        type:Array,
        default:['home','lw'],
    },

})
const Roles=mongoose.model("Roles",Rolelimit)

const Homelimit=new mongoose.Schema({
    title:{
        type:String,
        required:true
    },
    desc:{
        type:String,
        required:true
    }
})
const HomeData=mongoose.model("HomeData",Homelimit)

module.exports={Users,Roles,HomeData}  // 暴露所有集和

3.搭建服务器,创建server.js,编写如下代码

const express=require("express")
const server=express()
const {Users,HomeData,Roles}=require('./db/tables')

//链接数据库
require("./db/linkdb")
.then(()=>{    //数据库连接成功再启动服务器

// 注册路由
server.get('/getrolelist',(req,res)=>{    // 获取角色列表
   Roles.find()
   .then((docs)=>{res.send(docs)})    // 响应查询结果给客户端
   .catch((err)=>{res.sendStatus(500)})    
})
server.post('/login',(req,res)=>{    // 登录请求
    const userinfo=req.body    // 获取用户登录时输入的信息
    Users.findOne(userinfo)
    .then((doc)=>{if(doc)res.send({status:200,msg:'允许登录'})})  // 查询到用户的信息正确就允许用户登录    
    .catch((err)=>{res.sendStatus(500)})   
})

server.listen('5000',(err)=>{
    if(!err) console.log('server is running in http://localhost:5000')
})
})
.catch((err)=>{console.log('fail to connect db')})

4.启动服务器
在该项目文件夹下打开终端,执行下面指令

node server

如果连接数据库失败,可能是数据库服务器没有启动,可能是安装数据库的版本问题,也可能是电脑的问题。此时需要自己手动启动服务器。找到自己电脑的服务查看面板,点击mongoDB Server,然后启动此服务,再执行node server即可。

MongoDB解压版 mongodb 免费_服务器_02

5.前端发送请求

// 发送登录请求
import axios from 'axios'
axios({
  url:'/login',
  method:'post',
  data:{name:'a',password:'asdasfcs'},    // 用户登录时输入的信息
})
.then((res)=>{console.log(res.data)})
.catch((err)=>{console.log(err.message)})