Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript '==';在本地工作,但'=';需要在服务器上进行比较_Javascript_Meteor - Fatal编程技术网

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

Javascript '==';在本地工作,但'=';需要在服务器上进行比较,javascript,meteor,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.l

我不明白为什么我的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;
        }

});

为什么?

你的黑客攻击是错误的。它将始终输入if分支,主要是因为您不是在比较,而是在分配:

if(user[0].trusted = true)
此处您正在分配给用户[0]。信任真实值。因为它在if中,javascript正在检查赋值是否正确。因为它分配正确,所以它会进入分支(始终


将用户[0]的值发送到控制台。受信任。也许它是一个数字,或者有另一个值。无论如何,您的代码有一个bug,这与服务器无关。

您的黑客行为是错误的。它将始终输入if分支,主要是因为您不是在比较,而是在分配:

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;
        }

});
if(user[0].trusted = true)
此处您正在分配给用户[0]。信任真实值。因为它在if中,javascript正在检查赋值是否正确。因为它分配正确,所以它会进入分支(始终


将用户[0]的值发送到控制台。受信任。也许它是一个数字,或者有另一个值。无论如何,您的代码有一个bug,这与服务器无关。

这可能也是一个很好的方法:

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;
        }

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

或者,如果您将其转换为字符串,您可以使用
'true'
而不是
true
这可能也是一种很好的方法:

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

或者,如果将其强制转换为字符串,则可以使用
'true'
而不是
true

,您所做的只是将true赋值给将计算为true的属性。如果未检查trusted是否为true,则将无法进行比较…==比较和类型强制转换,==进行直接比较,就好像相同的类型
if(user[0]。trusted=true){}
等同于
user[0]。trusted=true;如果(真的){}
@humble.rumble这正是我说的。。。在不同的词中,您所做的只是将true赋值给将计算为true的属性。如果未检查trusted是否为true,则将无法进行比较…==比较和类型强制转换,==进行直接比较,就好像相同的类型
if(user[0]。trusted=true){}
等同于
user[0]。trusted=true;如果(真的){}
@humble.rumble这正是我说的。。。在服务器数据库中,我将
trusted
的值转换为字符串,而不是布尔值在服务器数据库中,我将
trusted
的值转换为字符串,而不是布尔值使用!返回一个与对象相反的布尔值?答案在这里使用!返回与对象相反的布尔值?答案在此处找到