Javascript '==';在本地工作,但'=';需要在服务器上进行比较
我不明白为什么我的Meteor模板助手不能在我的Ubuntu服务器上工作,所以我只是拼凑了几个变体,这个变体最终能在本地工作……我使用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
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
的值转换为字符串,而不是布尔值使用!返回一个与对象相反的布尔值?答案在这里使用!返回与对象相反的布尔值?答案在此处找到