如何在 SimpleSchema 中使用布尔值将 false 设置为值?

How to set false as a value using Boolean in SimpleSchema?

SimpleSchema 解决了一个非常普遍的问题,但我有时会被它搞糊涂。

例如,我在那里定义了这个值:

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)

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

我通过另一种方法解决了这个问题:

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

虽然不知道它是否适用于有条件的。看起来像一个错误。我会把这个答案留在这里,直到有人能给出更好、更彻底的答案。