安装 Mongoose
新增
npm install --save mongodb
npm install --save mongoose
//引入mongoose
var mongoose = require('mongoose');
//创建数据库连接,数据库名字:studentmanagement。如果数据库不存在会自动创建。
mongoose.connect('mongodb://localhost/studentmanagement');
//创建一个schema
var studentSchema = {
"name" : String,
"age" : Number,
"sex" : String
};
//创建一个模型(就是一个类)
var Student = mongoose.model("student" , studentSchema);
//new一个实例
var xiaoming = new Student({
"name" : "小明",
"age" : 12,
"sex" : "男"
});
//持久化
xiaoming.save();
查找
//引包
var mongoose = require('mongoose');
//连接数据库,数据库叫做studentmanagement。如果数据库不存在会自动创建。没有大回调。
mongoose.connect('mongodb://localhost/studentmanagement');
//创建一个schema
var studentSchema = {
"name" : String,
"age" : Number,
"sex" : String
};
//创建一个模型
var Student = mongoose.model("student" , studentSchema);
Student.find({"age" : {$gt : 12}},function(err,docs){
console.log(docs);
});
删除
Student.remove({"name" : "小明"},function(err){
});
修改
Student.find({"name" : "小强"} , function(err,docs){
var xq = docs[0];
xq.sex = "女";
xq.save();
});
配置mongodb的例子
const mongoose = require('mongoose');
mongoose.connect('mongodb://xx.xx.xx.xxx:27017/myblog',{useNewUrlParser:true},(err,res)=>{
if(!err){
console.log(res)
}
});
mongoose.connection.on('connected',() =>{
console.log('数据库连接成功')
})
mongoose.connection.on('disconnected',() =>{
console.log('数据库连接断开')
})
mongoose.connection.on('error',(err) =>{
console.log('数据库连接失败' + err)
})
//导出mongoose模块
module.exports = mongoose;
在创建实例(Schema)的时候引入,再导出
const mongoose=require('../config/config');
const Shema = mongoose.Schema;
// const usersShema =new Shema({
// // imageUrl:{type:String},
// username:{type:String},
// password:{type:String}
// // usersSex:{type:String},
// // usersAge:{type:String},
// // usersJob:{type:String},
// // percent:{type:Array},
// });
const usersShema =new Shema({
"username": {type:String},
"password" : {type:String},
"name":{type:String},
"sex":{type:String},
"job":{type:String},
"hobby":{type:String},
"constellation":{type:String},
"email":{type:String},
});
module.exports= mongoose.model('User', usersShema);
接口
const Users = require('../database/users');
// exports.saveUsers = async(ctx)=>{
// const users =new Users({
// username:ctx.request.body.usersName,
// password:ctx.request.body.password,
// usersSex:ctx.request.body.usersSex,
// usersAge:ctx.request.body.usersAge,
// usersJob:ctx.request.body.usersJob,
// imageUrl:ctx.request.body.imageUrl,
// percent:ctx.request.body.percent,
// })
// let result = await users.save();
// console.log(111)
// if(result){
// console.log(5555)
// ctx.body = {code:1}
// }
// }
exports.saveUsers = async(ctx)=>{
const users = new Users({
"username": ctx.request.body.username,
"password" : ctx.request.body.password,
"name":ctx.request.body.name,
"sex":ctx.request.body.sex,
"job":ctx.request.body.job,
"hobby":ctx.request.body.hobby,
"constellation":ctx.request.body.constellation,
"email":ctx.request.body.email,
});
let result = await users.save();
if(result){
ctx.body = {code:1,message:'注册成功'}
}
}
exports.findUsers = async(ctx)=>{
let result = await Users.find({username:ctx.request.body.username});
console.log(result)
if(result[0]){
ctx.body={code:1,message:result[0]}
}
else if(result[1]){
ctx.body = {code:3,message:'查到多条数据'}
}
else if(result = []){
ctx.body = {code:2,message:'该账号未注册'}
}
}
// exports.findUsers = async(ctx) =>{
// console.log(222)
// console.log(ctx.request.body.username)
// Users.find({username:ctx.request.body.username},function(err,docs){
// if(err){
// console.log(111)
// console.log(err)
// }
// else if(docs){
// console.log(222)
// console.log(docs)
// }
// });
// }
exports.updataUsers=async(ctx)=>{
// console.log(ctx.request.body._id)
console.log(ctx.request.body.password)
let result= await Users.updateMany({username:ctx.request.body.username},ctx.request.body);
console.log(result)
if(result){
ctx.body={code:1,message:'修改成功'}
}
}
router文件引入接口
const Router = require('koa-router')
const mongoose = require('../config/config')
const path =require('path');
const users = require('../interface/postUsers');
// const records = require('../interface/postRecent');
const router = new Router();
router.post ('/saveUsers',users.saveUsers); //第一种写法
router.post ('/findUsers',users.findUsers);
router.post ('/updataUsers',users.updataUsers);
router.post ('/findDynamic',require('../interface/postRecent').findDynamic); //第二种写法
router.post ('/saveRecords',require('../interface/postRecent').saveRecords);
router.post ('/findRemove',require('../interface/postRecent').findRemove);
router.post ('/updataRecords',require('../interface/postRecent').updataRecords);
router.post ('/findComment',require('../interface/postComment').findComment); //评论查询
router.post ('/saveComment',require('../interface/postComment').saveComment);
router.post ('/remvoeComment',require('../interface/postComment').remvoeComment);
module.exports = router;
在app.js中引用routers
const Koa = require('koa');
const app = new Koa();
const cors = require('koa-cors');
const bodyparser = require('koa-bodyparser');
const views = require('koa-views');
const path = require('path');
const static = require('koa-static');
const router = require('./router/getRoute');
const postRouter = require('./router/postRoute');
app.use(static(path.join(__dirname,'./dist')));
app.use(views(path.join(__dirname,'./build')))
.use(cors())
.use(bodyparser())
.use(router.routes())
.use(postRouter.routes())
app.listen(8030)
console.log('服务器启动成功')
这样就分模块的把mongodb进行引入,模块化的接口方式也利于维护