> # 前言
  既然做后端,那么肯定要连接数据库,我使用mongoose这种nosql类型的数据库插件。
  相对来说比起学习sql命令简单些。
> # 入门
## 安装 <hr>
`npm install mongoose`即可
<br>
<br>
<br>
## 简单使用 <hr>
  mongoose的宗旨就是先规划好schema表,然后将表model化,model化后的表就可以使用mongoose的各种命令了,比如简单的增删改查等等。
```javascript
// 我们先建个表
// /server/app/schemas/user.js
// 引入mongoose以及生成表
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// 配置表内容,schema有2个参数,第一个参数是表内容,第二个是表配置
// 一般collection需要你配置,填表的名字
// versionKey是__v是否需要,false那么数据库中将不显示
const uesr_schema = new Schema({
userId: {
type: String,
unique: true,
require: true
},
userName: String,
school: String,
schoolId: String
}, {
collection: 'user',
versionKey: false/*此处表示不需要versionKey*/
});
// 然后将之model化
// 为了方便,一般都直接model化
module.exports = mongoose.model('user', user_schema);
```
  好了,我们已经将表建好并且model化了,那么我们就可调用对数据库操作了。
```javascript
// /server/app/controllers/user.js
const user_model = require('../schema/user.js');
const login = async (ctx, next) => {
let req = ctx.request.body;
let user = req.user;
let pwd = req.password;
const result = await user_model.findOne({
userId: user,
password: pwd // 一般密码都是会加密的,我这边简化下
});
if (result) {
ctx.body = {
code: 1,
msg: '登陆成功',
data: result.userMsg
}
} else {
ctx.body = {
code: 0,
msg: '账号或密码不正确'
}
}
}
module.exports = {
login
}
```
  然后将控制器controller生成的方法放到api的路由中即可
```javascript
// /server/api/user.js
const user_controller = require('../app/controllers/user.js');
const Router = require('koa-router');
const router = new Router();
router.post('/login', user_controller.login);
module.exports = router;
```
  最后放到app.js中用app.use()处理下就完成了
```javascript
// /server/app.js
const mongoose = require('mongoose');
const Koa = require('koa');
const cors = require('koa2-cors');
const bodyParser = require('koa-bodyParser');
const app = new Koa();
mongoose.connect('mongodb://localhost:27017/demo-db', err => {
if (err) throw err;
console.log('成功连接数据库');
});
app.use(cors());
app.use(bodyParser());
const user_api = require('./api/user.js');
// koa-router的api要求先调用下routes,然后再调用下allowedMethods
app.use(user_api.routes()).use(user_api.allowedMethods());
app.listen(3000);
```