Angular 检查存储的内容时,会话值返回null
我正在开发一个ionic应用程序,我需要创建一个会话,因此当用户登录时,我会存储他的名字,然后我可以检查用户是否真的登录。为此,我创建了一个模型类和一个用户类。我的问题是,当我试图控制台记录存储在ionic中的值时,它会返回空值,下面的图像准确地解释了输出: 我不明白为什么它的日志记录方式像Angular 检查存储的内容时,会话值返回null,angular,typescript,session,ionic-framework,Angular,Typescript,Session,Ionic Framework,我正在开发一个ionic应用程序,我需要创建一个会话,因此当用户登录时,我会存储他的名字,然后我可以检查用户是否真的登录。为此,我创建了一个模型类和一个用户类。我的问题是,当我试图控制台记录存储在ionic中的值时,它会返回空值,下面的图像准确地解释了输出: 我不明白为什么它的日志记录方式像'0:n',1:o',2:m',3:e'。 我要做的是将用户名存储在会话中,同时记录日志 我是这样做的: import { Storage } from "@ionic/storage"; import {
'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 { 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());
}
编辑:下面是我在create中使用storage.get创建console.log时发生的情况
https://imgur.com/a/W2rQhd8
create(usuario: Usuario) {
this.storage.set('usuario', usuario);
console.log('[TEST] VALUE BEING PASSED IS ', this.storage.get('usuario'));
}
事情是这样的:
- 在login.ts中有以下行:
this.usuario=new usuario('nome')代码>
- Usuario继承了模型
- 模型调用
,使用构造函数中的参数设置自己的参数object.assign()
- 字符串本质上是一个数组李>
- 因此,通过调用
可以创建与字符串中每个索引对应的参数,每个索引的值都是字符object.assign(这是'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;
}
}
}
在运行时调试
create
中传递的对象!或者发布模型
类以及如何设置对象!请创建一个复制此问题的模型。@Ravikumar这是我的模型类:从“/../interface/Usuario”导入{Usuario};导出类模型{constructor(Usuario){Object.assign(this,Usuario);}}@SiddAjmera请发布您如何设置对象!抱歉耽搁了@SiddAjmera,这是代码src的上下文是什么?很抱歉,我不太明白你的代码到底在做什么。C是你传递给构造函数的对象。调用this.usuarioLogado=new Usuario(res)
在您的示例中,res
将是src
。您正在显示Promise对象。您需要执行this.storage.get('usuario')。然后(x=>console.log(x))
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;
}
}
}