'=='在本地工作,但在服务器上进行比较需要'='

时间:2015-05-20 01:31:45

标签: javascript meteor

我无法弄清楚为什么我的Meteor模板帮助器不能在我的Ubuntu服务器上工作,所以我只是将几个变体一起攻击并且这个最终正在工作...本地我使用if(user[0].trusted == true)但由于某种原因有条件没有在服务器上被触发。

Handlebars.registerHelper('isTrusted', function(user_id){
        var user = Meteor.users.find({_id: user_id}).fetch();

        console.log(user, 'user');
        console.log(user[0].trusted);

        if(user[0].trusted = true){
            console.log(user[0].trusted, 'user trusted field');
            return true;
        } else {
            false;
        }

});

为什么?

2 个答案:

答案 0 :(得分:3)

你的黑客错了。它总是会进入if分支,主要是因为你没有比较而是分配:

if(user[0].trusted = true)

在这里,您要分配给用户[0] .trusted真实值。因为它在if里面,javascript正在检查赋值是否正确。因为它分配正确,所以它进入分支(始终)。

向控制台发送user [0] .trusted的值。也许这是一个数字,或者有其他价值。无论如何,你的代码有一个bug,它不是服务器的东西。

答案 1 :(得分:1)

这也许是一种很好的方式:

Handlebars.registerHelper('isTrusted', function(user_id){
    return !!Meteor.users.findOne({_id: user_id, trusted: true});
});

或者如果您将其转换为字符串,则可以使用'true'代替true