我在Schema的toObject
中添加了一個變換函數來剝離某些屬性,並將_id
的名稱更改爲id
。當我使用findOne
並且對結果調用toObject
時,它很好用,但我也有一個命令。陣列上無法撥打toObject
。由Mongoose查找函數返回的數組的變換結果
這裏是我的架構:
var ItemSchema = new Schema({
version: {type: String, default: '1.0.0'},
created: {type: Date, default: Date.now},
modified: {type: Date, default: Date.now},
properties: Schema.Types.Mixed
}, {
toObject: {
transform: (doc, ret) => {
// remove the _id and __v of every document before returning the result
ret.id = doc.id;
delete ret._id;
delete ret.__v;
}
}
});
我看着它,並且只能找到this question,其中推薦的答案是使用lean()
- 這並不能幫助我。
作爲解決方法,我添加了行var result = items.map(x => x.toObject());
,雖然它很好用,但我不知道是否有辦法在返回的任何文檔(單個或數組)上自動觸發轉換,因此我不必遍歷結果。
據我所知,如果您添加了正確的[options](http://mongoosejs.com/docs/),您不應該手動調用'toObject' guide.html#toObject)添加到模式。你能否提供代碼以便將轉換添加到'toObject'?我懷疑鑰匙是否存在 – rompetroll
@rompetroll添加了架構代碼。乾杯! –