3
在node.js/Mongoose項目中,我有一個包含對外部圖像文件的引用的模式。使用貓鼬中間件來添加異步虛擬
var PageSchema = new Schema({
title: String
, media: {
digest: String
, name: String
}
});
這些文件具有被存儲在文件本身在附加屬性:URL,寬度,高度,EXIF字段等。這些字段將需要填充正在發送的模型前res.render()。
對於某些領域,事情是同步和虛擬少了點工作:
PageSchema.virtual('media.url').get(function() {
return appPaths.fileUrl(this.media);
});
然而,寬度/高度,或EXIF領域需要異步調用。我想使用中間件來填充它們,但這似乎不起作用:
PageSchema.post('init', function(next) {
var media = this.media;
var fileName = filedb.absoluteFilePath(media);
im.identify(fileName, function(err, features) {
if (err) {
media.width = 0;
media.height = 0;
} else {
media.width = features.width;
media.height = features.height;
}
next();
});
});
我在做什麼錯?是否有解決這類問題的通用設計模式? (除了在數據庫本身中複製這些信息?)