Я сейчас создаю приложение с помощью Polymer и Go, и я только что решил эту проблему.
Мои данные хранятся в MongoDB, и я использую JWT для аутентификации.
Здесь я буду использовать данные пользователя {email, ...} и приглашение {отправитель, получатель, событие, сообщение, ...}
Проблема в том, что я создал новую функциональность, и мне нужно, чтобы в моем HTTP-запросе была указана электронная почта пользователя в качестве аргумента, но я получаю сообщение об ошибке. Не удается получить «Электронная почта» с неопределенным значением из консоли Google.
для этого у меня есть 2 полимерных компонента
1 - компонент для получения «Приглашения» (сообщение, отправитель, событие)
2 - компонент, который использует (1) и является просто повторителем для отображения всех приглашений, которые получает пользователь.
Я пытался использовать другой компонент для получения электронной почты текущего пользователя, но он также не работал, та же проблема, что this.me.Email не работает (см. Код ниже)
(1) ['collab-service']. Me (this.token) возвращает в свойство 'me' данные пользователя, поэтому у меня есть доступ ко мне. Электронная почта (что мне нужно здесь)
static get properties() {
return {
invitation: {
type: Object,
notify: true,
},
/**
* Current user
* @public
* @type {Object}
**/
me: {
type: Object,
notify: true,
reflectToAttribute: true,
},
};
}
/**
* @inheritdoc
**/
connectedCallback() {
super.connectedCallback();
this.token = localStorage.getItem('token');
this.$['collab-service'].me(this.token).then(
(request) => {
this.me = request.response;
},
(error) => {
console.error('Error.');
console.error(error);
}
);
(2) GetInvitation (электронная почта пользователя) возвращает все приглашения, полученные пользователем
<div class="container">
<template is="dom-repeat" items="{{invitation}}" as="item">
<MyComponent1 pub="{{item}}"></MyComponent1>
</template>
</div>
{......}
static get is() {
return 'myFile2';
}
static get properties() {
return{
};
}
connectedCallback() {
super.connectedCallback();
this.$['invitations-service'].getInvitations(this.me.Email).then(
(request) => {
this.invitation = request.response;
},
(error) => {
console.error('Error.');
console.error(error);
}
);
}
Так что мне нужно, чтобы this.me.Email работал так, чтобы я мог видеть каждое приглашение.
Я поместил элемент {{me.Email}} в код HTML, чтобы посмотреть, есть ли у меня что-то в свойстве «me» и существует ли «me.Email». Возвращает адрес электронной почты текущего пользователя. Это просто не работает в методе getInvitation, и я не знаю почему.
Спасибо за помощь!
РЕДАКТИРОВАТЬ: я изменил код, добавил, чтобы загрузить приглашения, и он имеет доступ к атрибуту this.me.Email ...
Это решает проблему на данный момент, но это действительно не элегантно.
Я думаю, что это связано с загрузкой свойства me, я использую его, когда он еще не загружен, поэтому, когда страница загружена, у меня есть доступ к атрибутам me, но не так, как я загружаю его.