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:
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:
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`;
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 –
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