Поместить каждую начальную переменную в сериализатор узла?

У меня есть приложение React, через которое пользователи могут регистрировать учетную запись. При регистрации я хочу установить определенные переменные, чтобы, когда они посещают определенные разделы приложения, они отображали что-то или нет. Например: когда пользователь посещает компонент To-do, у него будет сохранено 0 задач. Если он добавит какие-либо, они будут добавлены в его учетную запись с помощью метода POST (экспресс).

Вопрос: Нужно ли мне добавлять все те переменные, которые я хочу, через функции схемы и сериализации? Я почти уверен, что не хочу просто размещать эти переменные в хранилище redux, а скорее извлекаю их из бэкэнда, поскольку они будут разными для каждого пользователя.

Например.:

UserSchema.methods.serialize = function() {
  return {
    username: this.username || "",
    firstName: this.firstName || "",
    lastName: this.lastName || "",
    toDos: this.toDos,
    readTOS: this.readTOS,
    etc.
  };
};

Я не уверен, что вы имеете в виду относительно магазина redux - как это не для каждого пользователя? Это на клиенте. В любом случае, откуда вы теперь тянете пользователя, если не из бэк-энда? Я также, вероятно, не буду хранить это непосредственно в пользователе, а скорее буду хранить некоторые связанные метаданные пользователя, но это относительно незначительное изменение / изменение.

Dave Newton 10.08.2018 17:15

@DaveNewton Я могу либо инициализировать эти переменные через компонент, а затем отправить их на серверную часть, либо сохранить запись initialState и напрямую инициализировать эти переменные при регистрации пользователя. Вытаскиваю пользователя из бэкэнда. Я читал, что не следует создавать большие состояния, а лучше обрабатывать переменные напрямую через бэкэнд

HJW 10.08.2018 17:21

Состояние должно содержать все, что вам нужно, чтобы делать то, что вам нужно делать на стороне клиента. Если клиенту необходимо знать, прочитал ли пользователь TOS и эта информация существует на серверной части, то все, что вы делаете на стороне клиента, бессмысленно, серверная часть управляет этим. Может быть, я неправильно понимаю, о чем вы спрашиваете, но пока для меня это не имеет никакого смысла.

Dave Newton 10.08.2018 17:29

Разрешите переформулировать вопрос. Когда пользователь регистрирует свою учетную запись, я хочу инициализировать ВСЕ переменные, необходимые для выполнения всех действий на стороне клиента. Как связать UserSchema со всеми другими переменными, такими как readTOS и т. д.?

HJW 10.08.2018 18:45

Вы не должны позволять клиентской стороне инициализировать переменные вне их контроля: это внутренние проблемы; единственное, что может сделать клиент, - это сказать серверной части, что он сделал, что могло повлиять на него. Подумайте об этом так: если бы у вас был флаг admin, вы бы позволили пользователю создать запрос, который мог бы включить его, чтобы они могли предоставить себе доступ администратора? (Подсказка: нет.)

Dave Newton 10.08.2018 18:48
0
5
18
0

Другие вопросы по теме