問題
Lambda、API Gateway を使って Web ブラウザからの入力結果を処理していた。Lambda 関数の戻り値に不要なダブルクォーテーションがついていた。
以下のような Lambda 関数を作成した。
lambda_function.py
if bool:
return 'Exist'
else:
return 'NotExist'
lambda_function.pyの戻り値がresponse.text()に格納されるのだが、bool が True であるにも関わらず、result === 'Exist' の結果が false になっていた。
main.js
fetch(url, requestOptions)
.then(response => response.text())
.then(result => {
if (result === 'Exist') {
alert('存在します。');
} else {
alert('存在しません。');
}
})
ログを見ると、result の値が ""Exist""
となっていた。そこで replace メソッドを使った。
main.js
fetch(url, requestOptions)
.then(response => response.text())
.then(result => {
if (result.replace(/"/g, '') === 'Exist') {
alert('存在します。');
} else {
alert('存在しません。');
}
})
replace
'Hello, WORLD!'.replace(/o/ig, '')
// 結果:"Hell, WRLD!"
- i フラグ:大文字と小文字の違いを無視して置換
- g フラグ:指定した正規表現にマッチするすべての文字列を置換(グローバルマッチ)
参考記事