Mongooseにはvirtual
という機能がある。
例えば、データベースにはfirstNameとlastNameという項目があるが、実際にfindするときはfullNameも吐き出して欲しいとする。
そんな時に、以下の様な感じでスキーマを定義したあとにvirtual
を使うとfirstNameとlastNameをくっつけたfullNameを吐き出したりすることができる。
これで実際にデータベース上ではfullNameを持たないけど、findしたときだけ仮想的にfullNameを生成して吐き出してくれる。
schema.virtual('fullName').get(function() {
return this.firstName + this.lastName;
});
はずなのだが、さっきやってみると吐き出されなくて焦った。
前まではこれでうまくいっていたのでかなり焦った。
解決方法
以下を記述したら、ちゃんと出力されるようになりました。
schema.set("toJSON", { virtuals: true });