2017-07-01 3 views
0

Ich möchte eine Abfrage zum Abrufen "Alle Projekte, die ein bestimmtes Mitglied haben".verschachtelte Abfrage funktioniert nicht in SailsJs

Project.js:

module.exports = { 

    attributes: { 

    name: { 
     type: "string" 
    }, 

    topics: { 
     collection: "topic", 
     via: "projects" 
    }, 

    profesor: { 
     type: 'string' 
    }, 

    creator: { 
     type: 'string' 
    }, 

    members: { 
     collection: "user", 
     via: "projects" 
    }, 

    content: { 
     collection: "content", 
     via: "projectData" 
    } 

    } 
}; 

user.js:

module.exports = { 

    attributes: { 

    projects: { 
     collection:"project", 
     via: "members", 
     dominant: true 
    }, 

    email: { 
     type: 'email', 
     required: true, 
     unique: true 
    }, 

    mat: { 
     type: 'integer', 
     required: true, 
     unique: true 
    }, 

    name: { 
     type: 'string', 
     required: true, 
    }, 

    lastname: { 
     type: 'string', 
     required: true, 
    }, 

    admin: { 
     type: 'boolean' 
    }, 


    encryptedPassword : { 
     type: 'string' 
    }, 

    toJSON: function() { 
     var obj = this.toObject(); 
     delete obj.password; 
     delete obj.encryptedPassword; 
     delete obj.confirmation; 
     delete obj._csrf; 
     return obj; 
    } 

    }, 


    beforeValidate: function (values, next) { 
    console.log(values); 
    if (typeof values.admin !== 'undefined') { 
     if (values.admin === 'unchecked') { 
     values.admin = false; 
     } else if (values.admin[1] === 'on') { 
     values.admin = true; 
     } 
    } 
    next(); 
    }, 

    beforeCreate: function (values, next) { 

    User.count().exec(function countCB(error, found) { 
     if (found == 0) { 
     values.admin = true; 
     } 
    }); 

    // This checks to make sure the password and password confirmation match before creating record 
    if (!values.password || values.password != values.confirmation) { 
     return next({err: ["Password doesn't match password confirmation."]}); 
    } 

    require('bcrypt').hash(values.password, 10, function passwordEncrypted(err, encryptedPassword) { 
     if (err) return next(err); 
     values.encryptedPassword = encryptedPassword; 
     // values.online= true; 
     next(); 
    }); 
    } 

}; 

und das ist meine Frage:

index: function(req,res){ 
     Project.find().populate('members', {name: 'Hugo'}).exec(function(err, prj){ 
       if (err) res.negotiate(err); 
       console.log("funciona esto?"); 
       console.log(prj); 


       res.view({ 
       project: prj 
       }); 
     }); 
    }, 

Warum nicht funktioniert? Es retrives alle Projekt, kann mir jeder helfen? Ich bin mir nicht sicher, ob die Wasserlinie das erlaubt.

+0

Ihre Abfrage alle das Projekt finden übersetzt und Mitglieder bevölkern, wo Namen des Mitglieds ‚Hugo‘ ist. Sie sollten stattdessen alle Projekte aller Mitglieder mit dem Namen "Hugo" finden. – Sangharsh

Antwort

0

Versuchen Sie, den Benutzer zu erhalten, dann die Projekte füllen:

index: function(req,res){ 
     User 
     .find({name: 'Hugo'}) 
     .populate('projects') 
     .exec(function(err, user){ 
       if (err) res.negotiate(err); 
       console.log("funciona esto?"); 
       console.log(user.projects); 


       res.view({ 
       project: user.projects[0] // first project 
       }); 
     }); 
    }, 
Verwandte Themen