在不修改数据库的情况下,如何对Sequelize取出的数据进行修改

从库中取出的数据给前端的时候,需要添加一个key字段,但这个字段不需要存储在数据库中,于是就考虑对取出来的数据做一次扩展。

没有修改的时候,能正常输出数据,但是一旦添加了key时,数据格式就变了

const a = model.findAll();
return {
    code: 200,
    data: a,
    data1: a.map(item => {
        ...item,
        type: 'aaa'
    })
};

接口返回值
image.png
明显看到data和data1的数据格式不一样了

请教一下这是为啥啊?


因为我在模型定义里面有定义get和set来改变数据结构,如果用raw: true就只能获取到数据存储时的结构,和期望不符。
尝试了一下用硬拷贝可以解决这个问题,

data1: a.map(item => {
    ...JSON.parse(JSON.stringify(item)),
    type: 'aaa'
})

是否有其他更优美的解决方案呢?

阅读 2.3k
2 个回答
data1: a.map(item => {
  item.dataValues.type = 'aaa';
})

可以直接改dataValues的值,就是不知道你会不会觉得更优美?

可以在Model中使用get函数进行key的添加,或者直接创建一个虚拟字段

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题