2016-10-13 5 views
0

Ich habe folgende Dokumentstruktur und müssen einer Unter Subdokument mit Mungo hinzuzufügen:hinzufügen Unter Subdokument Artikel mit Mungo

var organization = module.exports = mongoose.Schema({ 
    teams: [{ 
       permissions: [{ permission: String }] 
    }] 
}) 

organization.methods.addTeam = function(team){ 
    //the save occurs in a repository layer later on, for now I am just prepping the object for the save 
     this.teams.push(team); 
     var subdoc = this.teams[0]; 
     subdoc.isNew; 
} 

//Ideally, something like this would be great but I have not been able to find any doc that really provides a good example on this scenario 
organization.methods.addPermission = function(id(team), permission){ 
    var teams = this.teams.id(id) 
    teams.permissions.push(permission); 
    var subsubdoc = teams.permission[0]; 
    subsubdoc.isNew; 
} 

Ich bin ein Neuling auf node.js und mongodb und leite in die folgendes Problem mit Sub-Filialdokumenten. Im folgenden Beispiel muss ich dem Berechtigungsarray hinzufügen. Ich habe eine neue Methode für das Organisationsschema hinzugefügt, um das Hinzufügen des Teams zur Organisation gemäß einem von mir gefundenen Beispiel zu ermöglichen. Ich möchte dem Organisationsschema eine ähnliche Methode hinzufügen, um das Hinzufügen von Berechtigungen zum Team-Filialdokument zu ermöglichen. Ich möchte auch überprüfen und sicherstellen, dass die Erlaubnis nicht bereits besteht, bevor sie auch addiert. Wie soll ich mit diesem Szenario umgehen?

Antwort

0

Schauen Sie sich den Operator $addToSet von MongoDB an.

// file: modules/organization/add_permission.js 

var Organization = mongoose.model('Organization'); 

exports.addPermission = function(teamId, permission) { 

    Organization.update(
    {_id: teamId}, // query 
    {$addToSet: {permissions: {permission: permission}}}, // update 
    function(err) { // callback 
     // handle error 
     // other logic 
    } 
); 
}; 

Oder auf Ihrem Organization Mungo Modell etwas ähnliches wie ein Verfahren tun.

Verwandte Themen