安装mongoDB服务器和可视化工具
服务器下载地址:mongodb服务器下载,推荐下载4~5之间的版本,千万不要下载4以下的版本。下面是选版本并且下载的位置。
下载完毕后,安装即可,安装的时候别取消勾选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
即可。
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)})