ユーザー アカウントの更新に問題があります。次のスキーマ (collection2) を使用します。
lib/collections/users.js
Users = Meteor.users;
var Schemas = {};
Schemas.User = new SimpleSchema({
gender: {
type: Number,
min: 1
},
s_gender: {
type: Number,
min: 1,
optional:false
},
picture: {
type: String,
custom: function() {
var base64Matcher = new RegExp("^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$");
var value = this.value.replace("data:image/png;base64,","");
if(!base64Matcher.test(value))
{
return 'no picture';
}
else
{
return true;
}
}
}
});
Users.attachSchema(Schemas.User);
ここで、次のコードを使用して更新を行います。
クライアント/テンプレート/start.js
Users.update({_id: Meteor.userId()}, {
$set: {picture: picture, gender: gender, s_gender: s_gender}
}, {validationContext: "updateUser"}, function (error, result) {
if (error) {
errorObjs = Users.simpleSchema().namedContext("updateUser").invalidKeys();
console.log(errorObjs);
}
console.log(result);
});
検証はパスしましたが、結果に「0」しか表示されません (エラーは null です)。更新が機能していません。空のフィールドがあるとエラーが表示されるため、検証はうまく機能しています。スキーマをデタッチすると、更新は正常に機能します。
ここで何かを忘れたのですか、それとも検証に合格したときに彼が更新しないのはなぜですか?
// 編集: また、Meteor がユーザーを作成しなくなったこともわかりました。