Mongoose スキーマが定義されていると考えてください
var Schema_MySchema = new mongoose.Schema({
Field1: String, Field2: String
});
次の方法で仮想属性と設定オプションを追加しました。
Schema_MySchema.virtual('USERNAME').get(function () {
return this.Field1;
});
Schema_MySchema.set('toJSON', { virtuals: true });
次のように、スキーマ オブジェクトを使用して MongoDB からデータを取得します。
var Mod_Obj = mongoose.model('SchemaName', Schema_MySchema);
var Model_Instance = new Mod_Obj();
Model_Instance.find({}, function (err, docs) {
/*
Here I get a object docs with following structure:
[{ _id: ObjectId("511XXXdff9c4c419000008"),
Field1: 'SOMEvalueFromMongoDB_1',
Field2: 'SOMEvalueFromMongoDB_2',
USERNAME: 'SOMEvalueFromMongoDB_1'
}]
*/
});
Field1
今、MongoDB から返された実際の属性を削除したいと思います。docs
以下の削除方法を試しました。
1. delete docs.Field1;
2. var Json_Obj = docs.toJSON(); delete Json_Obj.Field1;
3. var Json_Obj = docs.toObject({ virtuals: true }); delete Json_Obj.Field1;
4. delete docs[0].Field1;
5. delete docs[0]['Field1'];
すべての方法が機能しませんでした。:-(
単純な JSON でテストするために実行すると、次のように機能しました。
var a = { 'A' : 1, 'B': 2 };
delete a.A;
console.log(a); //prints only object with B attribute only. i.e. { B: 2 }
ここで何が悪いのか誰か教えてもらえますか?
前もって感謝します...