当我在egg项目中直接使用query(sql,{model:Model}),这样去指定model的时候,他并没有按照model去构建数据
[eggjs/egg]一个egg-sequelize使用中的问题,
回答
你是这么写的嘛
const query=this.app.model.query
query(sql,{model})
那可能要换成
this.app.model.query(sql,{model})
你是这么写的嘛
const query = this。app。模特。查询
查询(sql,{model})
那可能要换成
这个。app。模特。查询(sql,{model})
现在有若干个一样的表,只是表名不同,我用this.ctx.model.XXX.findAll(),他是正常的,按照我写的构建的,然后我用this.ctx,model.query( “”,{... this.ctx.model.XXX}),他就只返回查询的结果,没有按照后面的模型构建
我这边试了下是可以的
我这边试了下是可以的
在model里只添加了个别字段,然后用mode.query(“select * from XXX”,{model:ctx.model.Xxx}) ,得到的结果是sql查到的结果,没有按照model构建啊。。
我这边试了下是可以的
按model构建的意思是指,会将结果转化成对应表的model的实例,你可以用console.log(result)打印看一下,这样的用话就可以调用实例的方法,比如instance.save()来更新数据,我猜你想的是过滤字段?
按model构建的意思是指,会将结果转化成对应表的model的实例,你可以用console.log(result)打印看一下,这样的用话就可以调用实例的方法,比如instance.save()来更新数据,我猜你想的是过滤字段?
前面我发的最下面的那个图,并没有按照model去构建啊,我定义了id d1 d2,但是在构建之后,打印result,d3 d4 d5还是可以打印出来的。同时我也设置了 freezeTableName: true
最好的做法是,一个表的字段都写在model里,然后使用orm的方法findAll,findOne,findByPk,update,destroy,直接写sql不方便维护,如果想自定义字段可以添加attributes
this.ctx.model.User.findAll({
where:{},
attributes:['field',''field2']
})
如果想排除字段
this.ctx.model.User.findAll({
where:{},
attributes:{
exclude: ['field',''field2']
}
})
最好的做法是,一个表的字段都写在model里,然后使用orm的方法findAll,findOne,findByPk,update,destroy,直接写sql不方便维护,如果想自定义字段可以添加attributes
this.ctx.model.User.findAll({
where:{},
attributes:['field',''field2']
})
如果想排除字段
this.ctx.model.User.findAll({
where:{},
attributes:{
exclude: ['field',''field2']
}
})
!!!第一次用,还没了解到这么多,非常感谢~~~