上一节回顾koa搭建服务端并运行服务端代码(如何在命令行调用本地依赖包)借助vscode调试代码工作内容连接数据库创建数据结构准备安装robo//数据库可视化工具安装mongoDb//我已经安装好了,没有遇到什么坑,不再赘述演示npmi-Smongoose//安装mongoosebrew服务startmongodb-community//启动mongoDb创建目录|-server|--db|---index.js//数据库连接|--model|---user.js//连接数据库的数据存储结构这里安装mongodb时没有设置密码,直接连接使用;//文件:db/index.jsconstmongoose=require('mongoose');mongoose.connect('mongodb://localhost:27017/demo');constdb=mongoose.connection;//mongoose.connect连接mongodb,返回一个可以监听事件的异步对象;db.on('connected',()=>{console.log('数据库连接成功');});db.on('error',()=>{console.log('发生错误')})db.on('disconnected',()=>{console.log('disconnected')})在/server目录,运行nodedb/index.js打印出“数据库连接成功”。优化连接建议域名、端口、数据库名exportmongoose.connection//file:new/server/config/db.jsmodule.exports={port:27017,//默认端口host:'localhost',database:'demo',//自定义数据库名称}//优化/server/bd/index.jsconstmongoose=require('mongoose');constDB=require('../config/db');const{port,host,database}=DB;constDB_URL=`mongodb://${host}:${port}/${database}`;//mongoose.connect连接mongodb,返回一个可以监听事件的异步对象;mongoose.connect(DB_URL);constdb=mongoose.connection;db.on('connected',function(){console.log(`Mongoose连接打开${DB_URL}`)})db.on('error',function(err){console.log(`Mongoose连接错误:${err}`)})db.on('断开连接',function(){console.log('Mongoose连接断开')})module.exports=猫鼬;创建数据结构//文件:server/model/user.jsconstmongoose=require('../db/index');constSchema=mongoose.Schema;//定义数据结构constuserSchema=Schema({__v:{//__v双下划线,默认生成select:false//select:false查询不会检出该字段},avatar:{type:String},账号:{type:String,required:true},密码:{type:String,required:true,select:false},别名:{type:String},电话:{type:String,select:false},email:{type:String,select:false}})//后续的增删改查都是通过导出的UserModel实现的module.exports=mongoose.model('User',userSchema);//文件:server/model/approve.jsconstmongoose=require('../db/index');constSchema=mongoose.Schema;constapproveSchema=Schema({name:{type:String,required:true},category:{type:String,required:true},description:{type:String,select:false},作者:{type:Schema.Types.ObjectId,//注释作者ref:'User',required:true},createtime:{type:Number,required:true},latesttime:{type:Number,required:true}})module.exports=mongoose.model('批准',approveSchema);schema定义是指文档approveSchema:Schema.Types.ObjectId,ref='User'中的author类型,添加approval时,将用户的Id赋值给author,然后通过populate,可以通过userId查出来用户信息并将Id替换为分配给作者字段的值。参考文档mongooseSchema定义参考文档mongoose一对多关系方案
