Я создаю простую учетную запись пользователя, используя MeteorJS. Пользователю предоставляется только возможность войти/зарегистрироваться с помощью Google. Если они регистрируются в первый раз, пользователям будет предложено заполнить информацию своего профиля после аутентификации с помощью своей учетной записи пользователя.
Я использую Collections2 для управления схемой учетной записи пользователя и присоединения ее к Meteor.users, как показано здесь:
var Schemas = {};
Schemas.UserProfile = new SimpleSchema({
firstName: {
type: String,
regEx: /^[a-zA-Z-]{2,25}$/,
optional: true
},
lastName: {
type: String,
regEx: /^[a-zA-Z]{2,25}$/,
optional: true
},
gender: {
type: String,
allowedValues: ['Male', 'Female'],
optional: true
}
});
Schemas.User = new SimpleSchema({
username: {
type: String,
regEx: /^[a-z0-9A-Z_]{3,15}$/
},
_id : {
type: String
},
createdAt: {
type: Date
},
profile: {
type: Object
},
services: {
type: Object,
blackbox: true
},
// Add `roles` to your schema if you use the meteor-roles package.
// Option 1: Object type
// If you specify that type as Object, you must also specify the
// `Roles.GLOBAL_GROUP` group whenever you add a user to a role.
// Example:
// Roles.addUsersToRoles(userId, ["admin"], Roles.GLOBAL_GROUP);
// You can't mix and match adding with and without a group since
// you will fail validation in some cases.
//roles: {
// type: Object,
// optional: true,
// blackbox: true
//}
// Option 2: [String] type
// If you are sure you will never need to use role groups, then
// you can specify [String] as the type
roles: {
type: [String],
optional: true
}
});
Meteor.users.attachSchema(Schemas.users);
При регистрации аккаунта получаю ошибку:
Исключение при вызове метода 'login' Ошибка: когда параметр модификатора имеет значение true, объект проверки должен иметь хотя бы один оператор
Я новичок в Meteor и не знаю, что означает эта ошибка. Я не могу найти никакой документации по этому вопросу. Я попытался изменить свои разрешения Meteor.users.allow и Meteor.users.deny, чтобы увидеть, имеет ли это какой-либо эффект, но, похоже, это какая-то основная проблема с тем, как я использую пакет collections2.
ОБНОВЛЕНИЕ - РЕШЕНО: эта опечатка в самом низу моего кода вызывала ошибку:
Где у меня Meteor.users.attachSchema(Schemas.users);
должно было быть Meteor.users.attachSchema(Schemas.User);
Также похоже на то, что опубликовал @Ethaan, я должен был сослаться на свой тип Schemas.User.profile на profile: {
type: Schemas.UserProfile
}
Таким образом, настройки моего профиля пользователя будут проверяться на основе схемы UserProfile, а не просто проверяться как объект.