Обновления профиля пользователя не работают после прикрепления простой схемы

Я пытался создать userProfile, добавив дополнительную информацию к Meteor.users, используя следующие пакеты:

  • aldeed:simple-schema
  • aldeed:Collection2
  • aldeed:AutoForm

Форма обновления генерируется и заполняется зарегистрированным адресом электронной почты, однако я не могу заставить кнопку отправки обновить что-либо в базе данных. Мой код ниже.

Путь: collections/UserProfile.js

Schema = {};

Schema.UserProfile = new SimpleSchema({
  firstName: {
    type: String,
    optional: true
  },
  lastName: {
    type: String,
    optional: true
  },
  birthday: {
    type: Date,
    optional: true
  },
  gender: {
    type: String,
    allowedValues: ['Male', 'Female'],
    optional: true
  }
});

Schema.User = new SimpleSchema({
  emails: {
    type: Array,
    optional: true
  },
  "emails.$": {
    type: Object
  },
  "emails.$.address": {
    type: String,
    regEx: SimpleSchema.RegEx.Email
  },
  "emails.$.verified": {
    type: Boolean
  },
  createdAt: {
    type: Date,
    autoValue: function() {
      return new Date()
    },
    autoform: {
      type: "hidden"
    }
  },
  profile: {
    type: Schema.UserProfile,
    optional: true
  },
  services: {
    type: Object,
    optional: true,
    blackbox: true,
    autoform: {
      type: "hidden"
    }
  },
});

Meteor.users.allow({
  update: function(userId, doc) {
    return !!userId;
  }
});

Meteor.users.attachSchema(Schema.User);

Путь: client/UserProfile.js

Template.UserProfile.helpers({
  user: function(){
    return Meteor.user();
  },
  userSchema: function () {
    return Schema.User;
  }
});

Путь: client/UserProfile.html

{{> quickForm collection="Meteor.users" doc=user id="user-profile-form" type="update"}}

Путь: server/publish.js

Meteor.publish('allUsers', function () {
  return Meteor.users.find();
});

Почему это происходит и как я могу это исправить?


person bp123    schedule 10.01.2016    source источник
comment
Я отредактировал ваш пост, чтобы сократить его и сделать его более подходящим для SO. Вы уверены, что для воспроизведения вашей проблемы нужна вся схема? Посмотрите, что такое минимально воспроизводимый пример.   -  person Kyll    schedule 10.01.2016
comment
Посмотрите, работает ли это без полей электронной почты. $   -  person Jeremy S.    schedule 11.01.2016
comment
Спасибо за помощь в форматировании и сокращении кода для SO @Kyll.   -  person bp123    schedule 11.01.2016
comment
Я попытался удалить поля с электронными письмами. $ Это просто привело к сбою приложения.   -  person bp123    schedule 11.01.2016
comment
У вас есть ошибки? Или кнопка «Отправить» просто ничего не делает?   -  person dr.dimitru    schedule 15.02.2016
comment
Привет @dr.dimitru. Спасибо, что посмотрели. Это было некоторое время назад. Я изменил вещи так много, что я не уверен, в чем была ошибка. Это был один из моих первых постов о переполнении стека, должен ли я как-то закрыть его?   -  person bp123    schedule 16.02.2016
comment
Привет @ bp123 нет, все в порядке. Но будет лучше найти решение, которое вы использовали, и ответить на свой вопрос. Чтобы другие могли наслаждаться вашим предыдущим опытом   -  person dr.dimitru    schedule 16.02.2016


Ответы (1)


Попробуйте использовать,

{{> quickForm schema=userSchema doc=user id="user-profile-form" type="update"}}

а также

Template.UserProfile.helpers({
 userSchema: function () {
   return Schema.User;
  }
});
person Pooja Jayaraj    schedule 22.06.2016