版权声明:请尊重原创 https://blog.csdn.net/Ag_wenbi/article/details/87890625
1、接上一篇文章https://blog.csdn.net/Ag_wenbi/article/details/87882869
2、新建右图中的文件
3、进入user.js文件,并添加如下代码
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const ObjectId = Schema.Types.ObjectId;
//创建userSchema
const userSchema =new Schema({
userId:{type:ObjectId},
userName:{unique:true,type:String},//unique表示不重复
password:{type:String},
createAt:{type:Date,default:Date.now()},//default表示默认值
lastLoginAT:{type:Date,default:Date.now()}
});
//发布模型
mongoose.model("user",userSchema);//这里的user对应数据库中的集合
4、下载glob(cnpm install --save glob)
5、进入init.js文件,并编辑此文件,如下
const mongoose = require("mongoose");
const db = "mongodb://localhost/smile-db";//数据库名
const glob = require("glob");//要安装glob才能引用,下文才能使用*等符号
const {resolve} = require("path");
exports.initSchemas = ()=>{
glob.sync(resolve(__dirname,"./schema",'**/*.js')).forEach(require)//表示遍历文件夹schema下的所有js文件
}
let maxConnectTimes = 0;
exports.connect = ()=>{
mongoose.connect(db);//连接数据库
return new Promise((resolve,reject)=>{
//增加数据库监听事件
mongoose.connection.on("disconnected",()=>{//监听数据库重连
if(maxConnectTimes <= 3){
console.log("数据库断开连接,正在重新连接...");
maxConnectTimes++;
mongoose.connect(db);//连接数据库
}else{
reject();
console.log("数据库出现问题");
}
});
mongoose.connection.on("error",(err)=>{//监听数据库错误
if(maxConnectTimes <= 3){
console.log("数据库错误,正在重新连接...");
mongoose.connect(db);//连接数据库
}else{
reject(err);
console.log("数据库出现问题");
}
});
mongoose.connection.once("open",()=>{//监听数据库打开的时候
maxConnectTimes = 0
console.log("数据库连接成功!");
resolve()
})
//增加数据库监听事件
})
}
6、进入jindex.js文件,编辑此文件,如下:
const Koa = require('koa');
const App = new Koa();
const {connect,initSchemas} = require("./database/init");
const mongoose = require("mongoose");
(async ()=>{
await connect();//异步连接数据库操作
initSchemas();
const user = mongoose.model("user");//与发布模型中的user对应
let oneuser = new user({userName:"温壁",password:"123456"});//添加对应的字段名称,与user.js中的对应
oneuser.save().then(()=>{
console.log("数据插入成功!");
});
let userInfo = await user.findOne().exec();//查找第一条数据
console.log("----------------");
console.log(userInfo);
console.log("----------------");
})()
App
.use(async(ctx)=>{
ctx.body = "<h1>hello koa2</h1>";
})
.listen(3000,()=>{
console.log("3000端口启动成功!");
})
7、在控制台中输入node index.js,得到如下表示代码运行正常
8、打开软件,Robo 3T(没有的自己下载)