knex
npm install -save knex
- 引入,封裝
const {dbconfig} = require('../config/index');
const knex = require('knex')({
client: 'mysql',
connection: dbconfig,
log: {
error (message) {
console.log('[knex error]', message)
}
}
})
class Base{
//查詢
all (tableName,where,who){
return knex(tableName).where(where).select(...who)
}
// 新增
insert (tableName,params){
return knex(tableName).insert(params);
}
// 更改
update (tableName,id, params){
return knex(tableName).where('id', '=', id).update(params);
}
// 洗掉
delete (tableName,id){
return knex(tableName).where('id', '=', id).del();
}
//查詢雙表
selectab(aobj,bobj){
return knex({ a:aobj.name, b:bobj.name})
.select({
auser: `a.${aobj.out}`,
bupload: `b.${bobj.out}`
})
.whereRaw('?? = ??', [`a.${aobj.where}`, `b.${bobj.where}`])
}
}
// 測驗------start
// let db = new Base()
//1、select
// db.all('user',{id:'33'},['name']).then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// })
//2、insert
// db.insert('user',{name:'lisa',password:'123456'}).then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// })
//3、update
// db.update('user',36,{name:'jenny'}).then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// })
// 4、delete
// db.delete('user',35).then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// })
// 5、selectab
// db.selectab({name:'user',out:'name',where:'relation'},{name:'upload',out:'name',where:'id'}).then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// })
// 測驗------end
module.exports = new Base();
- 運行測驗
node utils/knex.ts
列印日志
-
npm i winston -
根目錄添加一個配置列印日志格式的檔案 logger.js,文末有github地址,內參考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; -
app.js內請求錯誤處理的部分刪掉,更改為列印日志
const logger = require('./logger') app.use(function(err, req, res, next) { logger.error(`${req.method} ${req.originalUrl} ` + err.message) const errmsg = err.message res.status(err.status||500).json({ code:-1, success:false, message:errmsg, data:{} }) });
參考:
Node.js + Express + MySQL 搭建專案框架
winston
Knex.js
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/385619.html
標籤:其他
上一篇:百度地圖高級開發:map.getDistance計算多點之間的距離并輸入矩陣
下一篇:javaScript原型與原型鏈
