knex.jsegg.jsnodejs日期语法拼接
knex.js egg.js nodejs日期语法拼接
近期使用eggjs创建项目做后台接口开发,遇到了根据日期比较来进行拼接的knex.js语法,现总结一下:
//1、使用mysql数据库//2、使用egg.js快速开发
//写接口步骤:route.js controller.js service.js(routes.js不做介绍)
//controller.js
const Controller = require("egg").Controller;
class YxmController extends Controller{
async get() {
const {service,ctx} = this
const yxmList = await ctx.service.yxmService.get(ctx.request.params)
ctx.body = yxmList
ctx.status = 200
}
}
modules.exports = YxmController;
//service.js
const Service require("egg").Service;
class YxmService extends Service {
async get(params) {
const helper = this.ctx.helper //说明一: helper.js里可以作为extends扩展使用,里面自定义方法使用即可
const query = this.ctx.app.knex("yxm_table").where("y","y") //说明二: 在sql条件拼接过程中,不能使用await,最后执行的时候再使用
if(params.x) {
query = query.andWhere("x","x")
}
if(params.m) {
query = query.andWhere(function(){
this.whereRaw("1!=1") //说明三:whereRaw里可以直接拼接sql语句
//说明四:因为此时如果不写whereRaw("1!=1")这个一定为非的条件,后面直接使用orWhere会报错,因为没有和or拼接的第一个条件
if(params.m1) {
this.orWhere("m1","m1")
}
if(params.m2) {
this.orWhere("m2","m2")
}
})
}
if(params.date) {
query = query.whereRaw(`table_field_date >= date_format("`+params.date+`","%Y-%c-%d")`) //说明五:whereRaw后面的sql语句,若在函数(例如date_format)里有拼接参数,需要使用("`+ 变量 +`")这种格式拼接起来。因为whereRaw后面的sql语句由字符串变量等拼接,所以使用``转义。
//说明六:mysql使用date_formate(数据,"%Y-%c-%d")进行日期格式转换,oracle使用to_date(数据,"yyyy-MM-dd")进行日期格式转换。
}
}
const list = await query.paginate(params.per_page,params.page)
return list
}
module.exports = YxmService;
- 目前先总结了六个说明,都是使用过程中来回测试总结的,后期使用不费劲
- 拿走不谢!
- 欢迎底下评论总结更多......
以上是 knex.jsegg.jsnodejs日期语法拼接 的全部内容, 来源链接: utcz.com/z/517253.html