Praegu näidatakse kõiki andmebaasi kirjeid ja selles järjekorras nagu neid lisati.
Lisan App.js konteinerisse find meetodile piirangu 1 kirje näitamiseks:
export default createContainer(() =>{
let itemsSub = Meteor.subscribe('allItems');
return {
ready: itemsSub.ready(),
items: Items.find({},{
limit: 1
}).fetch()
}
},App);
Eesmärk on et kõik hääletatavad kirjed ei oleks korraga ekraanil vaid ainult need, mis on veel hääletamata, selleks tuleks need ka sorteerida.
Lisan uue muutuja kuupäeva salvestamiseks:
let date= new Date();
ja kasutan seda hääle lisamise/uuendamise funktsioonis:
Items.update(item._id, {
$inc: {
'asiYks.value': 1
},
$set: {
lastUpdated: date
}
})
Items.js:
import { Mongo } from 'meteor/mongo';
const Items = new Mongo.Collection('items');
if (Meteor.isServer) {
Meteor.publish('allItems',function() {
return Items.find();
});
Meteor.methods({
insertNewItem(asiYks,asiKaks) {
check(asiYks,String);
check(asiKaks,String);
Items.insert({
asiYks: {
text:asiYks,
value: 0,
},
asiKaks: {
text:asiKaks,
value: 0,
}
});
},
voteOnItem(item,position){
let lastUpdated= new Date();
if(position == 'asiYks') {
Items.update(item._id, {
$inc: {
'asiYks.value': 1
},
$set: {
lastUpdated: lastUpdated
}
})
} else {
Items.update(item._id, {
$inc: {
'asiKaks.value': 1
},
$set: {
lastUpdated: lastUpdated
}
})
}
}
});
}
export default Items;
Veel lisan App.js konteinerisse sorteerimise:
//Wrapper andmete lisamiseks klassile App
export default createContainer(() =>{
let itemsSub = Meteor.subscribe('allItems');
return {
ready: itemsSub.ready(),
items: Items.find({},{
limit: 1,
sort: { lastUpdated: 1} //sorteeritakse välja lastUpdated järgi
}).fetch()
}
},App);
Kui andmeid on rohkem siis võib ka serveri pool publish funktsioonis filtreerida ja sorteerida andmeid,
Items.js:
Meteor.publish('allItems',function() {
return Items.find({},{
limit: 1,
sort: { lastUpdated: 1}
});
});