【问题标题】:Access returned FindOne Mongoose Data访问返回的 FindOne Mongoose 数据
【发布时间】:2016-05-05 21:09:48
【问题描述】:

无法使用以下代码访问返回的 Mongoose/Mongo 数据:

Site.findOne({_id:id}).exec(function ( err, site ){ 
    console.log(site) // This will log all site data
    console.log(site.name) // This states - Cannot read Property 'name' of null 
})

为什么不允许我访问网站的 .name?如果我删除 _id 参数并使用 site[0].name ,我会工作。我确定它一定是我忽略的东西。请注意,在 Mongo 中填充了 site.name。

网站架构:

var SiteSchema = new Schema({
    name: String,
    content:String
});

var Site = mongoose.model('Site',SiteSchema, 'site')

_id 由 Mongo 在创建时设置。

【问题讨论】:

  • 而且,您应该始终检查err:如果已设置,site 将不会包含任何有用的信息...
  • @MarcoS url 是一个错字,我已经更正了。我检查了错误,没有错误,站点数据已设置。我只是无法访问特定项目。

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

对于 Mongoose findOne() 返回成功响应和空结果的一个很好的解释是,查询与任何文档都不匹配... :-)
您确定您传递的id 存在于集合中吗?

【讨论】:

  • id 存在于集合中,我能够控制台记录指定 id 的完整数据集。只有当我深入到返回数组中的一个项目时,它才会提示“TypeError:cannor read property 'name' of null”
  • findOne() 没有返回array,而是null... 您是否完全确定变量 id 包含文档的_id收藏?
  • 你是说“console.log(site) // 这将记录所有站点数据”,然后是“console.log(site.name) // 这表明 - 无法读取属性 'name'为空”???你能显示console.log(site) 的输出吗?对我来说,这看起来真的很奇怪......
猜你喜欢
  • 1970-01-01
  • 2016-10-08
  • 2017-08-18
  • 2016-07-14
  • 2018-07-07
  • 2015-04-30
  • 2018-08-07
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多