2016-08-23 6 views
0

Ich habe Probleme mit meinem Lenker bei jeder Anweisung, bei der die Anzahl der ausgegebenen HTML-Tags viel größer ist als die Anzahl der Datensätze, die in meiner SQL-Abfrage angezeigt werden. Alles, was ich in Tests feststellen konnte, ist, dass es kein Problem mit meiner SQL-Abfrage gibt, da es die genaue Anzahl der Datensätze in der Datenbank anzeigt und die Daten nicht auffächert. Dies hat mich dazu gebracht zu denken, dass es etwas mit meiner Schleife oder dem Objekt sein könnte, das die SQL-Abfrage-Information speichert.Lenker, die mehr ausgeben als Datensätze

Hier wird der HTML angezeigt wird:

handlebars output

Dies ist die HTML:

{{#each currentUsers}} 
       <li>{{this.email}} ({{#with this.teams.[0]}}{{teamName}}{{else}}No Team{{/with}})|<a href="/app/settings/users/{{this.userId}}/team">Edit Team</a> {{#ifeq this.userId ../user.userId}} (Admin) {{else}}| <a href="/app/users/{{this.userId}}" id="user-delete-link">Delete</a>{{/ifeq}}</li> 
      {{else}} 
       <p>No additional users</p> 
{{/each}} 

Hier ist meine Route:

appRoutes.route('/settings/users') 

    .get(function(req, res){ 
     models.User.find({ 
       where: { 
        organizationId: organization.organizationId 
       }, attributes: ['userId', 'email', 'firstName', 'lastName'], 
       include: [{ 
        model: models.Team, 
        attributes: ['teamName'] 
       }] 
      }); 
     }).then(function(currentUsers){ 
      res.render('pages/app/settings-users.hbs',{ 
       user: req.user, 
       currentUsers: currentUsers 
      }); 
     }).catch(function(error){ 
      res.send(error); 
      console.log(error); 
     }) 
    }); 

Hier ist die Ausgabe von die SQL, die genau einen Datensatz a anzeigt s erwarte ich:

SQL Output

schließlich die tatsächliche SQL:

SELECT `user`.*, `teams`.`team_id` AS `teams.teamId`, `teams`.`team_name` AS `teams.teamName`, `teams.member`.`member_id` AS `teams.member.memberId`, `teams.member`.`member_email` AS `teams.member.memberEmail`, `teams.member`.`organization_id` AS `teams.member.organizationId`, `teams.member`.`team_id` AS `teams.member.teamId`, `teams.member`.`user_id` AS `teams.member.userId`, `teams.member`.`created_at` AS `teams.member.created_at`, `teams.member`.`updated_at` AS `teams.member.updated_at`, `teams.member`.`organization_id` AS `teams.member.organization_id`, `teams.member`.`team_id` AS `teams.member.team_id`, `teams.member`.`user_id` AS `teams.member.user_id` FROM (SELECT `user`.`user_id` AS `userId`, `user`.`email`, `user`.`first_name` AS `firstName`, `user`.`last_name` AS `lastName` FROM `user` AS `user` WHERE `user`.`organization_id` = 2 LIMIT 1) AS `user` LEFT OUTER JOIN (`member` AS `teams.member` INNER JOIN `team` AS `teams` ON `teams`.`team_id` = `teams.member`.`team_id`) ON `user`.`userId` = `teams.member`.`user_id`; 
+0

Versuchen Sie 'Model.findAll()' zu verwenden, die Array von Objekten immer zurückgibt, wenn Daten vorhanden sind. '.find()' gibt das Objekt zurück, wenn dort ein Datensatz und Array wenn mehr –

+0

Vielen Dank @TilekbekovYrysbek das war die genaue Antwort, die ich gesucht habe. Macht es dir etwas aus, das als Antwort zu verwenden, und ich werde es genehmigen und upvoten? Sehr hilfreich und eine einfache Lösung! – cphill

Antwort

0

Try Model.findAll() zu verwenden, die immer Array von Objekten zurück, wenn es irgendwelche Daten. .find() gibt Objekt zurück, wenn dort ein Datensatz und Array wenn mehr

Verwandte Themen