2017-12-18 19 views
0

저는 지금 너무 많은 시간 동안 노력해 왔습니다. 기본적으로 사용자 이름을 삽입하고 데이터베이스에서 정보를 가져 와서 프론트 엔드의 객체를 업데이트하는 로그인 페이지를 만들고 있습니다 (유일한 차이점은 ObjectID가 추가 된 것입니다). 다음은 내가 원하는 것입니다.몽구스 백엔드 클래스를 프론트 엔드 클래스에 연결하는 방법 (Angular.io를 사용하는 Ionic)

  1. 사용자 이름을 입력하라는 메시지가 표시되는 로그인 페이지를로드하십시오.
  2. 사용자 이름을 입력합니다. 여러 가지가 여기에 일어날 수있다 : 그것은 새로운 이름으로 데이터베이스에 새 항목을 만들고 함께 새로운 사용자를 반환
    1. :
    ObjectIDUsername
  3. 그것은 (find()에서) 데이터베이스에서 항목을 반환

이 아무것도 미친 없지만, 단순히 오류 번번이 할 수

TypeError: Cannot read property 'username' of null

login.html

<ion-content> 
    <ion-input placeholder="Username" [(ngModel)]="user.username"></ion-input> 
    <button ion-button (click)="submit()">Submit</button> 
</ion-content> 

login.ts

export class LoginPage { 
    appStorage: Storage; 
    user = { 
    id: "test", 
    username: "test" 
    }; 
    //user: User; 
    //user: Object = {}; 

    constructor(private storage: Storage) { 
    this.appStorage = storage; 

    storage.get('user').then(user => { 
     this.user = user; 
    }); 
    } 

    submit() { 
    this.appStorage.set("user", this.user); 
    } 

    ngOnInit() { 
    this.user = { 
     id: "test", 
     name: "test" 
    }; 
    } 
} 

User.ts

export class User { 
    public id: string; 
    public username: string; 

    constructor(public inputId?: string, public inputUsername?: string) { 
     this.id = inputId; 
     this.username = inputUsername; 
    } 
} 

내가 가지고있는 사용자 클래스 주위에 변화 시도했습니다, 모든 것을 구성 요소로 옮겨 보았습니다. 모든 것을 시도했습니다. 나는 일을 할 수는 없습니다. 내 백엔드 몽구스 수업이 프론트 엔드와 일치하기를 바랍니다. 아마도 저를 위해 이것을 할 수있는 도서관이 있습니까? 그렇지 않으면 나는 그것들을 별개로 만들 것이다.

나는 User 클래스를 사용하고 싶습니다. 그래서 저는 객체를 사용하지 않습니다.

+0

'storage.get ('user') ...에서'user'가'null'으로 설정되었을 수 있습니다.'then' 콜백에서'console.log (user)'하면 아무 것도 얻을 수 있습니까? – Und3rTow

+0

@ Und3rTow Aaaah 그것이 문제가되는 곳입니다. 이제 잘 작동합니다. - 감사합니다. 이제 또 다른 문제 : 내 User 클래스가 올바르게 완료 되었습니까? 나는 그것을'storage.get()'에서 리턴 타입으로 설정할 수 없다. – MortenMoulder

+0

@ Und3rTow 그래, 대신 인터페이스로 사용한다면, 기본적으로'storage.get(). then ((user : User) => {if (user) {user.user = user} else { this.user = new User();}});'- 기본적으로 저장소에 사용자가 있는지 확인하십시오. 그렇지 않으면 빈 사용자로 설정하십시오. 그렇지 않으면 같은 오류가 발생합니다. – MortenMoulder

답변

0

나는 그렇게 생각하지 않아. 백엔드와 대화하려면 API를 사용해야합니다. 필요한 경우 POJO 인터페이스를 다시 사용할 수 있습니다. 프런트 엔드 코드에서 mongoosejs 저장 용량에 액세스하지 못합니다.