nodejs express后台demo
1.express-generator 是 Express 应用程序生成器工具,我们可以使用它来快速创建应用程序框架。
npm install -g express-generator
windows添加环境变量:E:\node\node_global
2.创建项目
express expressFrame (expressFrame 是项目名)
bin/www 是启动入口文件,在里面可以设置端口号等
3.下载安装依赖
npm i
npm i nodemon --save
npm i winston
4.修改配置
nodemon:监控 node.js 源代码的任何变化和自动重启你的服务器
winston:打印日志文件,在根目录创建文件 logger.js
logger.js :
const { createLogger, format, transports } = require('winston');
const fs = require('fs');
const path = require('path');
const env = process.env.NODE_ENV || 'development';
const logDir = 'log';
// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const filename = path.join(logDir, 'results.log');
const logger = createLogger({
// change level if in dev environment versus production
level: env === 'production' ? 'info' : 'debug',
format: format.combine(
format.label({ label: path.basename(process.mainModule.filename) }),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' })
),
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
}),
new transports.File({
filename,
format: format.combine(
format.printf(
info =>
`${info.timestamp} ${info.level} [${info.label}]: ${info.message}`
)
)
})
]
});
module.exports = logger;
5.修改 app.js 的配置:
将 const logger = require('morgan'); 改成:
const morgan = require('morgan')
相应的也要把 app.use(logger('dev')); 改成:
app.use(morgan('dev'));
引入 logger.js 文件
const logger = require('./logger')
屏蔽error hander,添加代码:
const _errorHander = (err, req, res, next) => {
logger.error(`${req.method} ${req.originalUrl} ${err.message}`)
const message = err.message
res.status(err.status || 500).json({
code: -1,
success: false,
message,
data: {}
})
}
app.use(_errorHander)
6.安装配置数据库相关
npm install -save knex mysql
在项目根目录下,新建配置信息 config.js
const configs = {
mysql: {
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '123456', // 自己设置的密码
database: 'expressFrame' // 数据库的名字
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
}
module.exports = configs
数据库配置
新建 models/knex.js, 初始化配置 knex
// 引用配置文件
const configs = require('../config');
// 把配置文件中的信息,设置在初始化配置中
module.exports = require('knex')({
client: 'mysql',
connection: {
host: configs.mysql.host,
port: configs.mysql.port,
user: configs.mysql.user,
password: configs.mysql.password,
database: configs.mysql.database
},
// 打印错误
log: {
error (message) {
console.log('[knex error]', message)
}
}
})
复制代码
knex 增删改查
在 models 下新建文件 base.js
const knex = require('../models/knex');
class Base{
constructor(props){
this.table = props;
}
// 查找
all (){
return knex(this.table).select();
}
// 新增
insert (params){
return knex(this.table).insert(params);
}
// 更改
update (id, params){
return knex(this.table).where('id', '=', id).update(params);
}
// 删除
delete (id){
return knex(this.table).where('id', '=', id).del();
}
}
module.exports = Base;
复制代码
新建用户模型
在 models 下新建文件 user.js
const Base = require('./base');
class User extends Base {
// 定义参数默认值为 user 表
constructor(props = 'user'){
super(props);
}
}
module.exports = new User();
复制代码
新建用户控制器
在根目录新建控制器文件夹 controllers,在 controllers 新建 user.js,并设置 showUser 方法
// 引用用户模版数据
const User = require('../models/user.js');
const userController = {
// showUser 获取用户数据并返回到页面
showUser: async function(req,res,next){
try{
let userData = await User.all()
res.json({
code: 200,
message: "操作成功",
data: userData
})
}catch(e){
res.json({ code: 0, message: "操作失败", data: e })
}
},
}
module.exports = userController;
复制代码
添加获取用户接口
修改路由 routes/index.js,添加获取用户信息的接口
const userController = require('../controllers/user');
// 获取用户信息
router.get('/get_user', userController.showUser);
测试接口
链接:https://juejin.cn/post/6914891222884564999
浙公网安备 33010602011771号