Ari*_*man 4 node.js express sequelize.js
我有这样的代码:
data = await photo.findOne({
where : {id}
})
Run Code Online (Sandbox Code Playgroud)
返回数据的
{
"a" : 2,
"b" : 5
}
Run Code Online (Sandbox Code Playgroud)
我想操作数据,例如插入一些字段
所以我添加属性:
data.c = data.a * data.b
Run Code Online (Sandbox Code Playgroud)
我在 console.log 中检查添加的数据
{
"a" : 2,
"b" : 5,
"c" " 10
}
Run Code Online (Sandbox Code Playgroud)
但是当我返回 json 时
return res.status(200).json({message: "success", data })
Run Code Online (Sandbox Code Playgroud)
数据仍然像第一个 { "a" : 2, "b" : 5 }
你的问题的原因是
Finder 方法旨在从数据库中查询数据。它们不返回普通对象,而是返回模型实例。由于查找器方法返回模型实例,因此您可以按照实例文档中的描述对结果调用任何模型实例成员。
当您data.c = data.a * data.b执行此操作时,您基本上是将属性添加到模型实例而不是数据对象。
你可以做类似的事情
dataInstance = await photo.findOne({
where : {id}
})
data = dataInstance.get({
plain: true // Important
})
data.c = data.a * data.b;
Run Code Online (Sandbox Code Playgroud)
干杯。不要忘记验证答案。
| 归档时间: |
|
| 查看次数: |
1908 次 |
| 最近记录: |