Mongooseを使用している場合は、「仮想」を使用できます。これは、基本的にMongooseが作成する偽のフィールドです。それらはDBに保存されず、実行時に入力されるだけです:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
このスキーマから作成したモデルでtoJSONが呼び出されると、Mongoが生成する_idフィールドと一致する「id」フィールドが含まれます。同様に、toObjectの動作も同じように設定できます。
参照:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
これをすべてのモデルのBaseSchemaに抽象化してから、拡張/呼び出してロジックを1か所に保持できます。 Emberは「id」フィールドを使用することを本当に好むため、Ember / Node/Mongooseアプリの作成中に上記を作成しました。