MongoDB EmbeddedDocument 与 JSON 转换

今天倒是碰到个很奇怪的问题, schema 中的字段是一个 json 对象包含三个数组, 然后每个数组里面存储 json 对象, 结果取出来数组 arr[i] 里面 json 对象的值 arr[i].key 不出来, 用中括号 arr[i][key] 也取不出来值感觉有些莫名其妙. 随后用 arr[i].constructor 字段查看了一下结果发现这个取出来的数据类型不是常见的 json 那样的 object 而是:

function EmbeddedDocument() {
    Subdocument.apply(this, arguments);
}

关于 EmbeddedDocument 类型, 仔细 google 了一下发现还是一个挺常见的类型确实算是我孤陋寡闻吧. 尝试用 JSON.parse 来转换失败之后研究了一下发现这个 Document 类型有自带很多方法的. 解决方案也很多 :

// 方法1
var json = arr[i].toJson();

// 方法2
arr[i].getValue(key);

// 方法3
arr[i].get(key);

EmbeddedDocument 的内置属性方法

见名之意, 所以直接列举了

  • __parent
  • __parentArray
  • _doc
  • _events
  • _id
  • _lazySetupHooks
  • _maxListeners
  • _posts
  • _pres
  • addListener
  • emit
  • equals
  • errors
  • get
  • getValue
  • hook
  • init
  • inspect
  • invalidate
  • isDirectModified
  • isInit
  • isModified
  • isNew
  • isSelected
  • listeners
  • markModified
  • modifiedPaths
  • on
  • once
  • ownerDocument
  • parent
  • parentArray
  • populate
  • populated
  • post
  • pre
  • remove
  • removeAllListeners
  • removeListener
  • removePre
  • save
  • schema
  • set
  • setMaxListeners
  • setValue
  • toJSON
  • toObject
  • toString
  • type
  • update
  • validate

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>