2016-12-11 72 views
0

我正在建设一个项目,其中一部分是媒体库。用户可以创建文件夹并将文件上传到任何文件夹。处理关系猫鼬模式

我的文件夹/文件结构是虚拟的,表示该文件夹仅存在于数据库中,文件位于一个物理文件夹下,但每个文件的元数据都包含文件夹结构中的级别。

现在所有的文件夹和文件都在一个模式下,我可以检索所选文件夹的子文件夹/文件,我可以检索单个文件夹/文件,也可以通过它们的类型检索文件。它的工作得很好,但)

我不想将每个文件类型分离到自己的模式,因为每个文件类型将有它自己的一组属性。现在我不知道如何将这些模式链接到我的资源模式。

这是否意味着为了检索选定文件夹的子文件夹/文件,我将不得不分别查询每个模式并将每个结果合并为一个?看起来这不是一个好主意,但我无法弄清楚如何处理它。

是否有任何常见的方法来处理这种情况?

谢谢。

回答

0

如果我理解正确,你是保存到数据库的文件元数据和文件夹结构,对不对?

如果是的话,也许你可以用填入,可以告诉猫鼬每个文件类型的架构,则链接:

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); 
    }); 

文档:http://mongoosejs.com/docs/populate.html