[mongoose] populate関係なく_idを取得したい
2014年5月28日
例えば doc が子スキーマの child を持つとするじゃん?
doc.child を populate していない場合:
doc.child // -> ObjectId
doc.populate(‘child’) 実行済み:
doc.child // -> ドキュメント doc.child._id // -> ObjectId
現在の自分の解答はこれ:
var _id = doc.child._id || doc.child;
null があるかもしれない場合:
var _id = (doc.child || {})._id || doc.child;
コォヒィスクリプトゥ!:
_id = doc.child?._id ? doc.child
一応これで動いては居るんですが、まぁスマートじゃないのでどうしたらいいのでしょう?
ちなみに、doc.populated(‘child’) という populate 済みの場合は ObjectId を返すものがあるのですが、未 populate だと undefined が返るのでこの問題には使い難い。
追記: 2014-05-28
こうすりゃ今よりは良くなった:
// child が null でも populated('child') は undefined を返す var _id = doc.populated('child') || doc.child;
とはいえ、一言で取れないのでまだ長いですが。