这是我参与新手入门的第3篇文章
MongoDB
接触过 Node.js 的基本也接触过这个数据库,对前端来说比较容易上手,搭配mongoose
插件上手成本很低。
安装
yarn add mongoose
复制代码
基本使用:
// 引入并连接数据库
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
// 定义一个Schema
const kittySchema = mongoose.Schema({
name: String
})
// Schema编译为一个Model
const Kitten = mongoose.model('Kitten', kittySchema);
// 通过new实例化
const felyne = new Kitten({ name: 'Felyne' });
// 通过model实例操作数据库的增删改查
// felyne.find()...
复制代码
由上可见mongoose
的配置包括三大部分:connect
、Models
和Schema
connect
:用于创建数据库连接
Schema
:Schema主要用于定义MongoDB中集合中数据的结构以及对于数据库中字段的定义。
Models
:Models 是从 Schema 编译来的构造函数。 它们的实例就代表着可以从数据库保存和读取的 documents。 从数据库创建和读取 document 的所有操作都是通过 model 进行的。简单说就是model是由schema生成的模型,可以对数据库的操作。
controllers
因为接口多了后代码会很乱,所以这里遵循模块化思想,业务逻辑不在 router 中处理,将路由的回调函数单独抽离在controllers文件中。
// controllers
const services = require('../services')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcrypt')
function register(ctx, next) {
const { username, password } = ctx.request.body
const user = await services.getUserByName(username)
if (user) {
ctx.body = {
code: 200,
message: '用户名已存在',
}
} else {
const pwdHash = bcrypt.hashSync(password, 10)
const result = await services.addUser({ username, password: pwdHash })
if (result) {
ctx.body = {
code: 200,
message: '注册成功',
}
}
}
next()
}
module.exports = {
register
}
复制代码
services
controllers 中只做业务处理,对于数据库的操作放在services文件中。
//services
const Users = require('../models/user')
async function getUserByName(username) {
return await Users.findOne({ username })
}
async function addUser(user) {
return await Users.create(user)
}
module.exports = {
getUserByName,
addUser
}
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END