0

SimpleSchema は大きな一般的な問題を解決しますが、私は時々混乱します。

たとえば、次の値が定義されています。

changedPassword: {
    type: Boolean,
    optional: true
}

ユーザーがパスワードを変更したかどうかを追跡し、明らかに または のいずれかである必要がありtrueますfalse。ただし、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 に答える