[解決済み] "タイプ 'string | string[]' はタイプ 'string' に代入できません。
2022-02-07 19:18:23
質問
私はnode + typescriptとAPI Callsのための統合swaggerを使用しています。私はswaggerで次のようなリクエストを持っています。
ここでは、ユーザー名 = test を持つレコードを見つけたいのです。
そこで、以下のようにURLモジュールを使ってクエリー文字列をパースすると、コンソールにユーザー名が表示されるようになりました。
var params = URL.parse(req.url, true).query;
console.log(params); //gives me [Object: null prototype] { username: 'test' } in my console
しかし、以下のようにparams.usernameを定数に代入しようとするたびに
const username:string =params.username;
次のようなエラーが発生します。
タイプ 'string | string[]' はタイプ 'string' に割り当てられません。 タイプ 'string[]' はタイプ 'string' に割り当てられません。
私の完全なコードは次のとおりです。
import * as URL from 'url';
public getUserByName = async (req: Request, res: Response, next: NextFunction) => {
var params = URL.parse(req.url, true).query;
const username:string =params.username;
try {
const findOneUserData: Employee = await this.userService.findUserByName(username);
res.status(200).json({ data: findOneUserData, message: 'findOne' });
} catch (error) {
next(error);
}
}
解決方法は?
さて、私の犯したミスが判明しました。まず、@ford04さんがコメントで述べていることです。私は文字列に直接Objectを代入していました。私の質問で変更しました。2つ目は、パースされたクエリ文字列を
toString()
関数を使用します。
public getUserByName = async(req: Request, res: Response, next: NextFunction) => {
var params = URL.parse(req.url, true).query;
console.log(params.username);
const username: string = params.username.toString(); //this is the key
try {
const findOneUserData: Employee = await this.userService.findUserByName(username);
res.status(200).json({
data: findOneUserData,
message: 'findOne'
});
} catch (error) {
next(error);
}
}
関連
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み】Heroku + node.jsのエラー(Webプロセスが起動後60秒以内に$PORTにバインドできなかった)。
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み】TypeScriptの "not assignable to parameter of type never "エラーとは?
-
[解決済み】Typescript Type 'string' はタイプに割り当てられない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】npx コマンドが見つかりません。
-
[解決済み】モジュール '@babel/core' が見つかりません。
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] エラーです。Cannot find module 'ejs'
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。