[eggjs/egg]一个egg-sequelize使用中的问题,

2025-11-14 771 views
1

当我在egg项目中直接使用query(sql,{model:Model}),这样去指定model的时候,他并没有按照model去构建数据

回答

5

你是这么写的嘛

const query=this.app.model.query
query(sql,{model})

那可能要换成

this.app.model.query(sql,{model})
0

你是这么写的嘛

const  query = this。app。模特。查询
查询(sql,{model})

那可能要换成

这个。app。模特。查询(sql,{model})

现在有若干个一样的表,只是表名不同,我用this.ctx.model.XXX.findAll(),他是正常的,按照我写的构建的,然后我用this.ctx,model.query( “”,{... this.ctx.model.XXX}),他就只返回查询的结果,没有按照后面的模型构建

4

我这边试了下是可以的

8

我这边试了下是可以的

在model里只添加了个别字段,然后用mode.query(“select * from XXX”,{model:ctx.model.Xxx}) ,得到的结果是sql查到的结果,没有按照model构建啊。。

6

我这边试了下是可以的

4

按model构建的意思是指,会将结果转化成对应表的model的实例,你可以用console.log(result)打印看一下,这样的用话就可以调用实例的方法,比如instance.save()来更新数据,我猜你想的是过滤字段?

1

按model构建的意思是指,会将结果转化成对应表的model的实例,你可以用console.log(result)打印看一下,这样的用话就可以调用实例的方法,比如instance.save()来更新数据,我猜你想的是过滤字段?

前面我发的最下面的那个图,并没有按照model去构建啊,我定义了id d1 d2,但是在构建之后,打印result,d3 d4 d5还是可以打印出来的。同时我也设置了 freezeTableName: true

1

最好的做法是,一个表的字段都写在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']
  }
})
6

最好的做法是,一个表的字段都写在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']
  }
})

!!!第一次用,还没了解到这么多,非常感谢~~~