2016-12-11 13 views
0

Ich baue ein Projekt, von dem ein Teil eine Mediathek ist. Der Benutzer kann Ordner erstellen und Dateien in einen beliebigen Ordner hochladen.Umgang mit relationalen Mungoschemas

Meine Ordner-/Dateistruktur ist virtuell, was bedeutet, dass der Ordner nur in der Datenbank vorhanden ist und Dateien sich in einem physischen Ordner befinden. Die Metadaten für jede Datei enthalten jedoch die Ebene innerhalb der Ordnerstruktur.

Für jetzt sind alle Ordner und Dateien unter einem Schema und ich kann untergeordnete Ordner/Dateien des ausgewählten Ordners abrufen und ich kann einzelne Ordner/Datei abrufen und ich kann auch Dateien nach ihrem Typ abrufen. Und es funktioniert sehr gut, aber)

Ich möchte jeden Dateityp in ein eigenes Schema trennen, da jeder Dateityp seinen eigenen Satz von Attributen hat. Und jetzt weiß ich nicht, wie ich diese Schemata mit meinem Ressourcenschema verknüpfen soll.

Bedeutet es, dass ich, um untergeordnete Ordner/Dateien des ausgewählten Ordners abrufen zu können, jedes Schema einzeln abfragen und jedes Ergebnis zu einem kombinieren muss? Es scheint, dass es keine sehr gute Idee ist, aber ich kann nicht herausfinden, wie ich damit umgehen soll.

Gibt es gemeinsame Ansätze für die Behandlung dieser Art von Szenarien?

Danke.

Antwort

0

Wenn ich richtig verstehe, speichern Sie in db die Dateimetadaten und die Ordnerstruktur, richtig?

Wenn ja vielleicht können Sie bevöl verwenden, um kann Mungo sagen die einzelnen Dateitypen Schema mit verknüpfen:

SomeTypeSchema = new Schema({ 
    // ... metadata fields ... 
    resourceParent: { 
     type: Schema.Types.ObjectId, 
     ref: 'ResourceModelName' 
    } 
}); 
module.exports = mongoose.model('SomeType', SomeTypeSchema); 

Dann können Sie tun:

var type = SomeType.find({field: 'somefilter'}) 
    .populate('resourceParent') 
    .exec(function(err) { 
     console.log(type.resourceParent.name); 
    }); 

Dokumentation: http://mongoosejs.com/docs/populate.html