0

RethinkDBジェネリックリポジトリをtypescriptに書き込もうとしています。 私は、RethinkDB javascriptが約束を返すのを見ました。たとえば、GetAllメソッドで、配列項目を返したいと思います。現時点では私はこのような何かを書いた:RethinkDBジェネリックリポジトリのtypescript、メソッドからの約束の結果を返します

public GetAll(): T[] { 
    this.db.GetConnection().then(connection => { 
     this.db.GetTable(this.tableName).run(connection).then(cursor => { 
      cursor.toArray<T>().then(items => { 
       return items; 
      }); 
     }); 
    }); 
} 

をしかし、私は[] Tの1行目でエラーが出ます:宣言された型のいずれもが「無効」にも「どんな」の値を返す必要である機能。

このメソッドからTの配列を返すにはどうすればよいですか?

答えて

0

あなたが返す必要が結果がPromiseから来ているので、あなたの方法でもPromiseを返す必要があり、(つまりは非同期に返さ):

public GetAll(): Promise<T[]> { 
    return this.db.GetConnection().then(connection => { 
     return this.db.GetTable(this.tableName).run(connection).then(cursor => { 
      return cursor.toArray<T>(); 
     }); 
    }); 
} 

この構文は、活字体の非同期/のawaitを使って多くのことを改善することができますサポート:

public async GetAll(): Promise<T[]> { 
    let connection = await this.db.GetConnection(); 
    let table = this.db.GetTable(this.tableName); 
    let cursor = table.run(connection); 
    return await cursor.toArray<T>(); 
} 
関連する問題