Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify显示属性值,但无法直接访问属性_Javascript_Json_Mongodb_Stringify - Fatal编程技术网

Javascript stringify显示属性值,但无法直接访问属性

Javascript stringify显示属性值,但无法直接访问属性,javascript,json,mongodb,stringify,Javascript,Json,Mongodb,Stringify,当试图直接访问JSON对象的属性(该对象来自MongoDB文档)时,我得到了一个未定义的值。但是,JSON.stringify()确实为该属性生成了一个值。如何直接访问属性而不必执行JSON.parse(JSON.stringify())调用 考虑以下代码: console.log(p.isFinal); console.log(p.playoffType); console.log(JSON.parse(JSON.stringify(p)).playoffType); 这些线路的输出为: f

当试图直接访问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类型有关,特别是在模式中没有显式声明属性。更多信息请参见本文:

将“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]}
})


您如何提出mongodb请求?你能分享一下吗?