Mongoose是什么?
简单一句话概括:Mongoose是一套操作MongoDB数据库的接口。
开始
在使用mongoose之前,需要事先安装好Node环境和MongoDB数据库。
以上准备就绪我们就可以了。
在Express Koa Egg中的使用
在Express中
首先初始化项目
npm init //初始化项目
npm i xxx --save//安装各种依赖例如express nodemon ...
目录如下
|-express
| | -- db//启动mongodb数据库的dbpath路径
| | --model//数据库中表的模型
| | --node_modules
| | --public//公共资源
| | --route//路由
| | --schema//模式类型
| | --app.js//入口文件
| | --package.json//配置文件
安装mongoose。
npm install mongoose//安装mongoose
在package.json
{
"dependencies": {
"body-parser": "^1.19.0",
"connect-multiparty": "^2.2.0",
"express": "^4.17.1",
"formidable": "^1.2.2",
"http-proxy-middleware": "^2.0.0",
"mongoose": "^5.12.13",
"multer": "^1.4.2",
"multiparty": "^4.2.2",
"nodemon": "^2.0.7",
"xlsx": "^0.17.4"
}
}
在app.js中引入依赖
const express=require("express");//引入express
const mongoose = require('mongoose');//引入mongoose
const app=express();
const port=8080;//端口号
mongoose.connect('mongodb://localhost:27017/Management',{useNewUrlParser:true,useUnifiedTopology:true},function(err){
if(err){
console.log('链接失败');
}else{
console.log('链接成功');
}
});//链接数据库名Mangagement端口号27017,取消数据库启动警告,
app.listen(port,()=>{
console.log(`Example app listening at http://localhost:${port}`)
})
开启数据库
在安装mongodb/bin目录执行cdm
执行如下指令
$ mongod --dbpath="数据库路径" --port=端口号
//例如
$ D:\Mongodb\bin> mongod --dbpath="E:\myNode\Management\db" --port=27021
然后再E:\myNode\Management执行
nodemon app.js//如果成功控制台会打印
链接成功
Example app listening at http://localhost:8080
//说明数据库链接成功
链接成功我们可以对MongoDB数据库进行CURD操作
在schema文件夹下定义数据表模式类型
在schema/user.js
const mongoose=require('mongoose');
module.exports=new mongoose.Schema({
Mailbox:String,
UserName:String,
Password:String,
Password01:String,
Name:String,
Phone:Number,
ContactAddress:String,
Passport:String,
ID:Number,
Company:String,
TouristGuide:String,
GoAbroad:String
})
在model文件夹定义数据表模型
const mongoose=require('mongoose');
const userSchema=require('../schema/user.js')
module.exports=mongoose.model('User',userSchema)
//定义数据表名为User但是mongodb中的数据表名是Users
在route文件夹下定义路由
const express=require('express');
const multipart = require('connect-multiparty');//
const XLSX=require("xlsx")//读取elsx文件
const multipartMiddleware = multipart();
const router=express.Router();
const User=require('../model/user.js')
let userData;
router.use((req,res,next)=>{
UserData={
code:0,
data:{},
message:""
}
next();
})
//上传excal表
router.post('/uploadFile', multipartMiddleware, async function (req, res, next) {
console.log("成功")
console.log(req.files.file.path)
let excelData = []; //用来保存
let reqData = [];
const workbook = XLSX.readFile(req.files.file.path);//读取文件
console.log(workbook)
const sheetNames = workbook.SheetNames;//[sheet1]
for (var sheet in workbook.Sheets) {
console.log(sheet)
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
console.log(workbook.Sheets[sh