javascript - meteor : "cannot read property ' xxx' of undefined"& 用变量替换字符串

标签 javascript mongodb meteor

我想使用变量而不是字符串“score20130901”,但如果我用以下代码替换字符串,有时(经常)会出现此错误: “未捕获的类型错误:无法读取未定义的属性‘currentflag’”

我在同一个 JavaScript 文件中的其他模板中使用了这个方法并且它有效。但不在此模板中。我猜是页面加载速度太慢或集合未完全加载。

新的JavaScript(这里我想用test替换score20130901)

Template.voting.books = function () {
    var flag = Flags.findOne({_id: "bookflag"});
    test = flag && flag.currentflag;
    //alert(test);

    var books = Books.find({flag: "score20130901"}).fetch();
    return _.sortBy(books, function (book) {
        return _.reduceRight(book.score20130901, function (memo, num) {
            return memo + num;
        });
    }).reverse();
}; 

数据库:

Flags.insert({
_id: "bookflag",
currentflag: "score20130901"
});

.


.

另一个问题是,我正在拼命尝试用一个变量替换同一个字符串,如果该字符串有一个带有 [i] 的数组,例如:

JavaScript:

Template.book.totalscore = function () {
    var flag = Flags.findOne({_id: "bookflag"});
    test = flag.currentflag;

    var total = 0;
    for (var i=0; i<5; i++) {
        total += this.test[i];
    }
    return total;
};  

最佳答案

试试这个:

Template.voting.books = function () { 
    var flag = Flags.findOne({_id: "bookflag"}); 

    if (typeof flag !== 'undefined') { 
        var books = Books.find({flag: flag.currentflag}).fetch(); 
        return _.sortBy(books, function (book) { 
            return _.reduce(book[flag.currentflag], function (memo, num) { 
                return memo + num; 
            }); 
        }).reverse(); 
    }
    else return []; 
};

对于第二部分,这是:

Template.book.totalscore = function () {
    var flag = Flags.findOne({_id: "bookflag"});

    if (typeof flag !== 'undefined') { 
        return _.reduce(this[flag.currentflag], function (memo, num) { 
            return memo + num; 
        });
    }
    else return 0;
}; 

关于javascript - meteor : "cannot read property ' xxx' of undefined"& 用变量替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18475636/

相关文章:

javascript - 如何在每个调用堆栈中只调用一次函数?

JavaScript AddEventListener - 退格键

javascript - 如何正确传递具有传播属性的嵌套属性? (JSX)

mongodb - 如何在 MongoDB shell 中将 NumberDecimal 转换为 Double?

mongodb - 更新 MongoDB 中所有文档中的特定字段

Meteor 将 Reactive Var 定义为可在 .events 和 .helpers 中访问

javascript - jQuery 和 Perl : progress bar based on state of "pipeline file", 动态 ajax

python - 如何在mongodb聚合中对嵌套字段进行分组

javascript - Meteor Angular & Request - 如何绑定(bind)?

android - 将meteor apk连接到heroku/mLab db