2015-06-27 127 views
0

SimpleSchema解决了一个很大的普遍问题,但是我有时候被人困惑了。如何在SimpleSchema中使用布尔值将false设置为值?

举例来说,我已经定义了有此值:

changedPassword: { 
    type: Boolean, 
    optional: true 
} 

它跟踪用户是否改变了他的密码,显然应该是要么truefalse。但是,SimpleSchema似乎没有分享我对Boolean含义的看法。

无论如何,changedPassword在有人创建用户时根本不存在,并且在他更改密码时设置为true。当我进行密码重置时,问题就会到来,并且该值应该恢复为false或再次不存在。 SimpleSchema似乎不允许对此字段进行任何更改,但将其设置为true

我的方法可能是这样,

changedPassword: function(status) { 
    if (status === false) { 
    Meteor.users.update({_id: Meteor.userId()}, {$unset: {changedPassword: ''}}) 
    } 
} 

changedPassword: function(status) { 
    if (status === false) { 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {changedPassword: false}} 
    } 
} 

,但它仍然不会真正做出改变,甚至当我登录并输入在Meteor.call('changedPassword', false)安慰。

这到底是什么目的,我该如何解决它?

回答

0

我周围有通过简单地使另一种方法:

notChangedPassword: function() { 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {changedPassword: false}}) 
} 

不知道它不会与条件工作,虽然。看起来像一个错误。我会在这里留下这个答案,直到有人能够提供更好,更彻底的答案。

相关问题