javascript - Update Meteor Leaderboard with own data -
i've changed meteor example leaderboard voting app. have documents array , in array there 6 values. sum of 6 values works fine, not updating , showing values in app.
the values updating, if click on them. problem is, booknames (it's voting app books) "selected_books" variable (previously selected_players), don't know how can book names.
by way: _id book names. give code snippets , hope, have solution.
this document database:
{     _id: "a dance dragons: part 1",     isbn: 9780007466061,     flag: 20130901,     score20130714: [1,2,3,4,5,0], }   parts of html file:
<template name="voting">     ...     <div class="span5">         {{#each books}}             {{> book}}         {{/each}}     </div>     ... </template>   <template name="book">     <div class="book {{selected}}">         <span class="name">{{_id}}</span>         <span class="totalscore">{{totalscore}}</span>     </div> </template>   and parts of javascript file:
template.voting.books = function () {     var total = 0;     var book = session.get("selected_book");      books.find({_id:book}).map(function(doc) {         (i=0; i<6; i++) {             total += parseint(doc.score20130714[i], 10);         }     });     books.update({_id:book}, {$set: {totalscore: total}});      return books.find({flag: 20130901}, {sort: {totalscore: -1, _id: 1}}); };   thanks in advance
don't update data in helper fetch it! use second helper aggregating information or transform modifying data items. example:
template.voting.books = function() {     return books.find({}, {sort: {totalscore: -1, _id: 1}}); };  template.books.totalscore = function() {     var total = 0;     for(var i=0; i<6; i++) {         total += this.score[i];     }     return total; };   as side note, do not use construct for (i=0; i<6; i++), it's deadly. always declare index variables: for (var i=0; i<6; i++).
Comments
Post a Comment