
[英]why Console.log(req.body.post) give correct id but using it in Post.findById return undefined
[英]Why sequelize return result different than console.log(return)?
我尝试通过 postman 发送数据,数据结果是干净的(没有其他属性)。 但是当我尝试 console.log(data) 时,还有许多其他属性。 我在另一个线程上读到( Sequelize 返回结果与 console.log(result) 不同),这是因为 res.json 将数据序列化为一个普通的 object 和来自 dataValues 的 model 道具。 但是res.json怎么可能只得到dataValues属性而忽略其他属性呢?
我的代码:
async getItems(req, res, next){
const data = await Item.findAll({
attributes: ['id', 'name', 'price']
});
console.log(data);
return res.status(200).json(data);
};
postman 结果:
[
{
"id": 1,
"name": "PS5",
"price": 600
},
{
"id": 2,
"name": "XBOX X",
"price": 400
}
]
控制台日志(数据)结果:
[
Item {
dataValues: {
id: 1,
name: 'PS5',
price: 600
},
_previousDataValues: {
id: 1,
name: 'PS5',
price: 600
},
uniqno: 1,
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
},
Item {
dataValues: {
id: 2,
name: 'XBOX X',
price: 400
},
_previousDataValues: {
id: 2,
name: 'XBOX X',
price: 400
},
uniqno: 1,
_changed: Set(0) {},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array]
},
isNewRecord: false
}
]
Sequelize 模型实现了一个toJSON
方法, JSON.stringify
在底层调用了该方法。 您还可以调用model.toJSON()
来获取更清晰的日志:
https://sequelize.org/docs/v6/core-concepts/model-instances/#note-logging-instances
另一个例子:
JSON.stringify({
toJSON() {
return 'arbitrary value';
}
});
// => "arbitrary value"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.