> # 前言
  既然做后端,那么肯定要連接數(shù)據(jù)庫,我使用mongoose這種nosql類型的數(shù)據(jù)庫插件。
  相對來說比起學習sql命令簡單些。
> # 入門
## 安裝 <hr>
`npm install mongoose`即可
<br>
<br>
<br>
## 簡單使用 <hr>
  mongoose的宗旨就是先規(guī)劃好schema表兑障,然后將表model化非洲,model化后的表就可以使用mongoose的各種命令了褐奴,比如簡單的增刪改查等等锯仪。
```javascript
// 我們先建個表
// /server/app/schemas/user.js
// 引入mongoose以及生成表
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// 配置表內(nèi)容,schema有2個參數(shù),第一個參數(shù)是表內(nèi)容铜异,第二個是表配置
// 一般collection需要你配置哥倔,填表的名字
// versionKey是__v是否需要,false那么數(shù)據(jù)庫中將不顯示
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);
```
  好了咆蒿,我們已經(jīng)將表建好并且model化了,那么我們就可調(diào)用對數(shù)據(jù)庫操作了币绩。
```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('成功連接數(shù)據(jù)庫');
});
app.use(cors());
app.use(bodyParser());
const user_api = require('./api/user.js');
// koa-router的api要求先調(diào)用下routes缆镣,然后再調(diào)用下allowedMethods
app.use(user_api.routes()).use(user_api.allowedMethods());
app.listen(3000);
```