课程名称:Node.js工程师养成计划
课程章节: 第九章
课程讲师:北瑶
课程内容
在 model 里面建立一个 user.js 用于链接mongoose
module.exports = app => { const mongoose = app.mongoose const Schema = mongoose.Schema const UserSchema = new Schema({ username: { type: String, required: true }, email: { type: String, required: true }, password: { type: String, required: true, select:false }, phone: { type: String, required: true }, image: { type: String, default: null }, cover:{ type: String, default: null }, channeldes:{ type: String, default: null }, subscribeCount:{ type:Number, default:0 } }) return mongoose.model('User', UserSchema) }
连接mongodb 并给 password 设置了 查询时不显示
select:false
新建 controller 文件夹
'use strict'; const { Controller } = require('egg'); class HomeController extends Controller { async index() { var userinfo = await this.app.model.User.find() this.ctx.body = userinfo } } module.exports = HomeController;
this.app.model.User 会自动找到 app文件下得 model 下的 user.js
关于数据校验
npm i egg-validate
config 文件下 plugin。js
module.exports.validate = { enable: true, package: 'egg-validate', };
设置为开启状态
然后创建 middleware - error_handler.js
module.exports = () => { return async function errorHandler(ctx, next) { try { await next(); } catch (err) { // 所有的异常都在 app 上触发一个 error 事件,框架会记录一条错误日志 ctx.app.emit('error', err, ctx); const status = err.status || 500; // 生产环境时 500 错误的详细错误内容不返回给客户端,因为可能包含敏感信息 const error = status === 500 && ctx.app.config.env === 'prod' ? 'Internal Server Error' : err.message; // 从 error 对象上读出各个属性,设置到响应中 ctx.body = { error }; if (status === 422) { ctx.body.detail = err.errors; } ctx.status = status; } }; };
设置全局得错误处理
需要再 config.default.js 引入
config.middleware = ['errorHandler'];
const Controller = require('egg').Controller class UserController extends Controller { async create() { const { ctx } = this ctx.validate({ username: { type: 'string' }, email: { type: 'string' }, password: { type: 'string' }, }) ctx.body = 'user' } } module.exports = UserController
此时就能得出校验结果
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦