Значение сеанса возвращает ноль при проверке того, что хранится - PullRequest
0 голосов
/ 05 октября 2018

Я работаю над ионным приложением, которое мне нужно для создания сеанса, поэтому, когда пользователь входит в систему, у меня сохраняется его имя, я могу проверить, действительно ли пользователь вошел в систему или нет.Для этого я создаю класс модели и класс пользователя.Моя проблема заключается в том, что когда я пытаюсь сохранить в журнале свое значение, хранящееся в ionic, он возвращает нулевые значения, вот изображение, поясняющее точно вывод:

enter image description here

Я не понимаю, почему это регистрируется как '0: 'n', 1: 'o', 2: 'm', 3: 'e'.То, что я хочу сделать, это сохранить имя пользователя в моем сеансе и войти в него одновременно.

Вот как я это делаю:

import { Storage } from "@ionic/storage";
import { Injectable } from '@angular/core';
import { Usuario } from "./interface/usuario";

@Injectable()
export class Session {

    constructor(public storage: Storage){}

    create(usuario: Usuario) {
        this.storage.set('usuario', usuario);
    }

    get(): Promise<any> {
        return this.storage.get('usuario');
    }

    remove() {
        this.storage.remove('usuario');
    }

    exist() {
        this.get().then(res => {
            console.log('resultado >>> ', res);
            if(res) {
                console.log('resultado IF');
                return true;
            } else {
                console.log('resultado else');
                return false;
            }
        });
    }
}

Мой класс пользователя / класса Усуарио:

import { Model } from './../models/model';

export class Usuario extends Model{
    nome: string;
    email: string;
    login: string;
    senha: string;
} 

Класс модели

import { Usuario } from './../interface/usuario'; 

export class Model{ 
    constructor(Usuario){ 
        Object.assign(this, Usuario); 
    } 
} 

Где я извлекаю то, что было сохранено внутри моего объекта Usuario, и записываю его сразу после

ionViewDidLoad() {
  this.carregarPerfil();
  this.session.get()
    .then(res => {
      this.usuarioLogado = new Usuario(res);
      console.log('usuário logado  >>> ', this.usuarioLogado);
    });

  console.log(this.session.exist());

  this.session.remove();

  this.session.get()
    .then(res => {
      this.usuarioLogado = new Usuario(res);
      console.log('USUARIO LOGADO  >>> ', this.usuarioLogado);
    });

  console.log(this.session.exist());
}

РЕДАКТИРОВАТЬ: вот что происходит, когда я утешаю.войти внутрь создать, используя storage.get

https://imgur.com/a/W2rQhd8

    create(usuario: Usuario) {
        this.storage.set('usuario', usuario);
        console.log('[TEST] VALUE BEING PASSED IS ', this.storage.get('usuario'));
    }

1 Ответ

0 голосов
/ 08 октября 2018

Вот что происходит:

  • В файле login.ts у вас есть следующая строка: this.usuario = new Usuario('nome');
  • Усуарио наследуется от Model.
  • Вызовы моделиobject.assign() использование параметра из конструктора для установки своих параметров.
  • Строка по своей сути является массивом.
  • Итак, вызывая object.assign(this, 'nome'), вы создаете параметры, соответствующие каждому индексу в строке, со значением в качестве каждого символа.

Очевидно, что вы хотите сделать что-то другое в строке,такие как передача item в конструктор.Однако я думаю, что бизнес object.assign вызывает проблемы, и вы должны быть более откровенны в отношении десериализации своего результата.

export class Usuario {
    nome: string;
    email: string;
    login: string;
    senha: string;

    constructor(src: any) {
        if (src) {
            this.nome = src['nome'] || undefined;
            this.email = src['email'] || undefined;
            this.login = src['login'] || undefined;
            this.senha = src['senha'] || undefined;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...