如何在 SimpleSchema 中使用布尔值将 false 设置为值?
How to set false as a value using Boolean in SimpleSchema?
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)
。
这到底是什么目的,我该如何解决?
我通过另一种方法解决了这个问题:
notChangedPassword: function() {
Meteor.users.update({_id: Meteor.userId()}, {$set: {changedPassword: false}})
}
虽然不知道它是否适用于有条件的。看起来像一个错误。我会把这个答案留在这里,直到有人能给出更好、更彻底的答案。
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)
。
这到底是什么目的,我该如何解决?
我通过另一种方法解决了这个问题:
notChangedPassword: function() {
Meteor.users.update({_id: Meteor.userId()}, {$set: {changedPassword: false}})
}
虽然不知道它是否适用于有条件的。看起来像一个错误。我会把这个答案留在这里,直到有人能给出更好、更彻底的答案。