【发布时间】:2011-12-29 18:35:07
【问题描述】:
在 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();
});
});
我做错了什么?是否有解决此类问题的通用设计模式? (除了在数据库中复制这些信息?)
【问题讨论】: