Express/Dust.js - View array of data
Problem
I currently have my homepage showing the 6 oldest Stories posts from MongoDB
I use the below for the query from Mongo:
var query = Story
.find({maxlines:10})
.sort({_id:1})
.limit(6);
Then I'm using this to pass the information to dust.js
app.get('/', function(req, res){
query.exec(function(err, story) {
if (err) console.log(err);
res.render('index', {
title: 'Test!',
storytitle1: story[0].title,
storylines1: story[0].lines,
storyid1: story[0].sid,
storyslug1: slugs(story[0].title),
storytitle2: story[1].title,
storylines2: story[1].lines,
storyid2: story[1].sid,
storyslug2: slugs(story[1].title),
storytitle3: story[2].title,
storylines3: story[2].lines,
storyid3: story[2].sid,
storyslug3: slugs(story[2].title),
storytitle4: story[3].title,
storylines4: story[3].lines,
storyid4: story[3].sid,
storyslug4: slugs(story[3].title),
storytitle5: story[4].title,
storylines5: story[4].lines,
storyid5: story[4].sid,
storyslug5: slugs(story[4].title),
storytitle6: story[5].title,
storylines6: story[5].lines,
storyid6: story[5].sid,
storyslug6: slugs(story[5].title)
});
});
});
Then on i have the below on the .dust template
{storytitle1}
{#storylines1}
{text}
{/storylines1}
{storytitle2}
{#storylines2}
{text}
{/storylines2}
Basically for each of the 6 i render them individually, it works perfectly fine, but i'm wondering if there is a better/cleaner way to do this? Because i want to implement another page '/all/ which shows for example the last 20 stories and i don't want to write them all individually within the template.
Problem courtesy of: Tam2
Solution
Try this.
Code:
app.get('/', function(req, res){
query.exec(function(err, story) {
if (err) console.log(err);
for (var i = 0; i
Template:
{#stories}
{title}
{#lines}
{text}
{/lines}
{/stories}
Solution courtesy of: Vadim Baryshev
Discussion
View additional discussion.