Я пытаюсь добавить имя пользователя от пользователя, подписавшегося для заполнения поля данных формы. Я получил имя пользователя, однако оно не помещается в переменную для публикации в базе данных. Функция выглядит следующим образом:
addMessage() {
this.mocsignup.getUserProfile().subscribe((res) => {
this.mocUserDetails = res['user'];
});
let userDetail = this.mocUserDetails.username;
console.info(userDetail);
let formData: any = {
username: this.form.value.userDetail,
message: this.form.value.message,
}
this.messageService.postMessage(formData).subscribe((d) => {
console.info(d);
});
//window.location.reload();
}
Этот фрагмент кода получает имя пользователя и сохраняет его в переменной userDetail
, что подтверждается результатами console.info:
this.mocsignup.getUserProfile().subscribe((res) => {
this.mocUserDetails = res['user'];
});
let userDetail = this.mocUserDetails.username;
console.info(userDetail);
console.info results:
Это предполагаемые результаты.
однако при попытке опубликовать в базе данных, используя следующий код:
let formData: any = {
username: this.form.value.userDetail,
message: this.form.value.message,
}
this.messageService.postMessage(formData).subscribe((d) => {
console.info(d);
});
Он не добавляет username
в коллекцию, а пропускает его и отправляет сообщение и messageDateTime:
Предполагается, что в приведенных выше результатах хранится поле username
, которого нет.
Пожалуйста помоги!
Обратите внимание, что у вас есть 2 разные переменные userDetail
:
let userDetail = this.mocUserDetails.username;
this.form.value.userDetail
Вы сохраняете данные в первом, но позже вы ссылаетесь на второй в formData
. Попробуйте изменить свой код следующим образом:
let formData: any = {
username: userDetail ,
message: this.form.value.message,
}
Если вы getUserDetails()
выполняете вызов API, то этот метод будет асинхронным, в этом случае код не будет ждать, пока API вернет имя пользователя, и он перейдет к следующему блоку операторов. Поэтому, если вы хотите использовать результаты getUserDetails()
, переместите операторы в блок метода, например так:
this.mocsignup.getUserProfile().subscribe((res) => {
this.mocUserDetails = res['user'];
let userDetail = this.mocUserDetails.username;
console.info(userDetail);
});