使用mongoose操作数据库
在前一节中,我们已经将项目跑起来了。这节我们来使用mongoose来操作MongoDB,通过之前的的章节想必大家都在安装起了MongoDB,并了解了一点点基本使用。关于mongoose的基本使用可以查看Node操作MongoDB数据库
连接数据库
在连接数据库之前当然是先开启数据库了。如果忘了怎么开启,回过头去看看(温故而知新)
index.js
...
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/blog')
在项目中,代码与配置分离是一种很好的做法。可以很方便我们的更改,同时在开发阶段、测试阶段、线上部署等阶段使用不同的配置。关于如何针对不同环境使用不同配置,后面再说
我们先在config文件夹下建一个config.js
module.exports = {
port: process.env.PORT || 3000,
session: {
key: 'blog',
maxAge: 86400000
},
mongodb: 'mongodb://localhost:27017/blog'
}
现在在index.js中直接引入config.js 使用即可
...
const mongoose = require('mongoose')
const CONFIG = require('./config/config')
mongoose.connect(CONFIG.mongodb)
..
设计Schema
现在我们以下节要讲的用户登录注册为例来设计用户模型,并生成Model。 model是由schema生成的模型,可以对数据库的操作
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const UserSchema = new Schema({
name: {
type: String,
required: true,
unique: true
},
email: {
type: String,
required: true,
unique: true
},
password: {
type: 'string',
required: true
},
meta: {
createAt: {
type: Date,
default: Date.now()
}
}
})
module.exports = mongoose.model('User', UserSchema)
使用model
在routes
目录下新建一个user.js
用来实现用户注册登录等。如下,为了演示使用mongoose操作数据库,我们新建了一个用户
const UserModel = require('../models/user')
module.exports = {
async signup (ctx, next) {
const user = {
name: 'liuxing'
email 'chn.liuxing@gmail.com'
password: '123456'
}
const result = await UserModel.create(user)
ctx.body = result
},
}
添加一个GET /signup
路由,查看数据库可以看见刚刚新建的这个用户
在这儿,我们把数据写死了,没有从表单获取数据,也没有对密码加密。详细的登录注册我们下一节再讲。