2017-12-18 17 views
0

私はあまりにも多くの時間を試してきましたが、これを動作させることはできません。私はログインページを作成しています。ここでは基本的にユーザー名を挿入し、データベースから情報を取り出し、フロントエンドでオブジェクトを更新します(違いはObjectIDが追加されたことだけです)。ここに私が欲しいものがあります:Mongooseバックエンドクラスをフロントエンドクラスに接続する方法(Angular.ioを使用したIonic)

  1. ユーザー名の入力を求めるログインページを読み込みます。
  2. ユーザ名を入力します。複数のものはここに起こることができます:それは、新しいユーザー名を使用してデータベースに新しいエントリを作成して、新しいユーザーを返し
    ObjectIDUsername
  3. それは(find()から)データベースからエントリを返します。

これは狂気の何物でもありませんが、私は単にエラーを乗り越えることはできません。

TypeError: Cannot read property 'username' of null

私は、私が持っているUserクラスの周りに変更しようとしました

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; 
    } 
} 

私はすべてをコンポーネントに移そうとしましたが、すべてを試しました私は単にこれを働かせることはできません。バックエンドのMongooseクラスをフロントエンドに合わせたい。おそらく私のためにこれを行うことができるライブラリはありますか?さもなければ、私はそれらを別々にします。

私は本当に私が持っているユーザークラスを使いたいので、私はオブジェクトを使用していません。

+0

あなたの 'storage.get( 'user')...の中で' user'が 'null'に設定されている可能性があります' '' 'コールバックの中で' 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ストレージにはアクセスできません。

関連する問題