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;

  1. 目前先总结了六个说明,都是使用过程中来回测试总结的,后期使用不费劲
  2. 拿走不谢!
  3. 欢迎底下评论总结更多......

以上是 knex.jsegg.jsnodejs日期语法拼接 的全部内容, 来源链接: utcz.com/z/517253.html

回到顶部