标签:knex format demo require express nodejs js const message
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);
测试接口
访问一下 http://localhost:3000/users/get_user
链接:https://juejin.cn/post/6914891222884564999
标签:knex,format,demo,require,express,nodejs,js,const,message 来源: https://www.cnblogs.com/jack123/p/15784112.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。