我正在构建一个项目,其中一部分是媒体库。用户可以创建文件夹并将文件上传到任何文件夹中。
我的文件夹/文件结构是虚拟的,意味着该文件夹仅存在于数据库中,文件位于一个物理文件夹下,但每个文件的元数据包含文件夹结构内的级别。
现在所有文件夹和文件都在一个架构下,我可以检索所选文件夹的子文件夹/文件,我可以检索单个文件夹/文件,也可以按类型检索文件。而且效果很好,但是)
我不想将每种文件类型分成自己的模式,因为每种文件类型都有自己的属性集。现在我不知道如何将这些模式链接到我的资源模式。
这是否意味着为了检索所选文件夹的子文件夹/文件,我必须分别查询每个模式并将每个结果合并为一个?似乎这不是一个好主意,但我无法弄清楚如何处理它。
是否有处理此类情景的常用方法?
感谢。
答案 0 :(得分:0)
如果我理解正确,你要保存文件元数据和文件夹结构,对吗?
如果是这样,也许你可以使用populate来告诉mongoose将每个文件类型Schema链接到:
SomeTypeSchema = new Schema({
// ... metadata fields ...
resourceParent: {
type: Schema.Types.ObjectId,
ref: 'ResourceModelName'
}
});
module.exports = mongoose.model('SomeType', SomeTypeSchema);
然后你可以这样做:
var type = SomeType.find({field: 'somefilter'})
.populate('resourceParent')
.exec(function(err) {
console.log(type.resourceParent.name);
});