запрос мангуста, виртуалы не отображаются
У меня есть следующая схема, настроенная на mongoose, я использую версию 3.6.17:
var PostSchema = new Schema({
_id: { type: String, required: true, index: { unique: true } },
video: { type: String, default: ''},
cover: { type: String, default: ''},
createdAt: { type: Date, default: Date.now },
lastUpdate: { type: Date, default: Date.now }
}, { autoIndex: true, toObject: { virtuals: true }, toJSON: { virtuals: true } });
И следующие виртуалы:
PostSchema.virtual('replied').get(function () {
return false;
});
PostSchema.virtual('cover_url').get(function () {
return config.cover.server + this.cover;
});
PostSchema.virtual('video_url').get(function () {
return config.video.server + this.video;
});
Когда я делаю совокупный запрос:
Post.aggregate( { $match: { replyTo: { $ne: "" }, author: user._id, draft: false } },
{ $project: {
_id: 1,
video: 1,
video_url: 1,
cover: 1,
cover_url: 1,
createdAt: 1,
lastUpdate: 1,
Ireplied : { $not: "$replied"} }
}, function ( ) ....
В этот момент виртуалы возвращаются, но возвращаются с атрибутом this.cover или this.video, неопределенным.
И когда я делаю Post.findOne (..). Lean (). Populate (...) и т. Д., Я вообще не получаю виртуальные файлы, ни с Post.find (). Lean (). Populate (.. .)
Я что-то упускаю в схеме Post, чтобы иметь возможность вернуть виртуалы, или я делаю что-то не так? И почему при агрегированной операции виртуалы возвращают значениеthis.cover» как неопределено?
Спасибо!