gpt4 book ai didi

javascript - JSON.stringify 显示属性值,但无法直接访问属性

转载 作者:行者123 更新时间:2023-12-02 22:45:27 25 4
gpt4 key购买 nike

当尝试直接访问 JSON 对象的属性(该对象来自 MongoDB 文档)时,我得到一个未定义的值。但是,JSON.stringify() 确实会为该属性生成一个值。如何直接访问该属性而无需执行 JSON.parse(JSON.stringify()) 调用?

考虑以下代码:

console.log(p.isFinal);
console.log(p.playoffType);
console.log(JSON.parse(JSON.stringify(p)).playoffType);

这些行的输出是:

false
undefined
seed

注意:在示例中,p =

{ _id: 5da0eef8d7772b13dc58d2e1,
week: 14,
isFinal: false,
isPlayoff: true,
playoffType: 'seed',
playoffTeams: [ 4, 5 ],
teams: [] }

...所以我希望输出是:

false
seed
seed

另请注意:如果我将 p 声明为对象文字,则直接属性调用将起作用。仅当 p 是 MongoDB 调用的结果值时,它才会产生不正确的结果。

我认为这意味着值在 MongoDB 调用中的存储方式,因为在通过 parse(stringify(p)) 调用强制执行之前,字符串类型的属性不会被识别为属性。

预先感谢您的帮助!

最佳答案

事实证明,答案与 MongoDB 类型有关,特别是属性未在架构中显式声明。更多内容请参见这篇文章:

Mongoose - can't access object properties?

将“playoffType”属性添加到架构(下面的片段)后,直接 p.playoffType 调用将按预期工作。

const ffMatchupSchema = new Schema({
teams: {type: [
{
owner_id: {type: Schema.Types.ObjectId, ref: 'Owner'},
ff_teams: {type: {}},
wins: {type: Number},
isFinal: {type: Boolean},
starter_points: {type: Number}
}], required: false},
week: {type: Number},
winner: {type: {}},
matchup_id: {type: Number},
isFinal:{type: Boolean},
isPlayoff: {type: Boolean},
playoffType: {type: String},
playoffTeams: {type: [mongoose.Mixed]}
})

关于javascript - JSON.stringify 显示属性值,但无法直接访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com