提问者:小点点

Sequeize findByPk结果


我要查找idis的itme:1const student=await this.db.student.findBypk(1)

当我得到结果时,然后控制它(console.log(student))

student {
  dataValues: { id: 1, name: 'Darush', family: 'Hamidi' },
  _previousDataValues: { id: 1, name: 'Darush', family: 'Hamidi' },
  _changed: Set(0) {},
  _options: {
    isNewRecord: false,
    _schema: null,
    _schemaDelimiter: '',
    raw: true,
    attributes: [ 'id', 'name', 'family' ]
  },
  isNewRecord: false
}

那么将学生发送到浏览器的结果将是(res.send(student))?

{
  "id": 1,
  "name": "Darush",
  "family": "Hamidi"
}

为什么我们有区别?


共2个答案

匿名用户

这是因为使用findbypk方法(以及所有类似的方法),您将获得一个Sequelize模型的实例,而不是一个普通对象,并且当您将此模型实例传递给res.send时,它将序列化为仅具有模型属性的普通对象。如果您希望从一个模型实例中获取一个普通对象,那么调用get({plain:true})就没有什么区别了。

const plainStudentObj = student.get({ plain: true })
res.send(plainStudentObj)

匿名用户

我将RWA设置为true:它可以很好地工作

const student = await this.db.Student.findByPk(1,{ raw: true })