タイプスクリプトで "約束"を使用することに疑問があります。私は分度器とタイプスクリプトでe2eのテストフレームワークを書いています。フォームを記入したりバリデーションを行うために取得したデータを使用するために、データベースに何らかの問い合わせをしたいと思います。静的メソッド[ts]で "約束"を "文字列"に変換する方法
新しいクラス "UserService"を作成しました。データを返すためにいくつかの静的メソッドを使用することを考えています。私はそれを処理するためにtypeOrmライブラリをインストールしました。
問題は "約束"を "文字列"に変換する方法を見つけることができないことです。どうしたらいいですか?
コードを見てください: "ステップ" のクラスに
import "reflect-metadata";
import { User } from "././entities/user";
import { ConnectionOptions, Connection, Driver, createConnection } from "typeorm";
const connectionOptions: ConnectionOptions = {
driver: {
type: "mysql",
host: "localhost",
port: 3306,
username: "root",
password: "admin123",
database: "user"
},
entities: [User],
autoSchemaSync: false
};
export class UserService {
static getUserName(userId:number): string {
let us = createConnection(connectionOptions).then(connection => {
return connection.getRepository(User).findOne({Id: userId})
}).then(user => user.name);
return us; //it return an Promise<string>.
}
}
は、上記のクラスは次のように例で使用されます。
let name: string = UserService.getUserName(1);
txtUsername.Sendkeys(name);
約束が解決されたら、すでにコードを実行するという約束の2回目、次に()の方法を使用しています。 'UserService.getUserName(1).then(name => txtUsername.Sendkeys(name)); ' –
実際にはできません。それは非同期です、あなたはそれを待たなければなりません。 'UserService.getUserName(1).then(name => txtUsername.Sendkeys(name))' – Bergi
静的メソッドのみを持つJavaScriptの 'class'は非常に悪いコードです。 –