0

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)在控制台中输入。

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

4

1 回答 1

0

我通过简单地制作另一种方法来解决它:

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

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

于 2015-06-27T02:32:36.723 回答