質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

4338閲覧

TypeScript+Express4でDBからの値をJSON形式へ変換する方法

user_h

総合スコア14

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/05/21 14:08

###質問内容
以下のソースコードでDBのデータをJSON形式に変換しますが、データがテキストデータとして、扱われているので、json.IDのようにプロパティを指定しても、値が出ない状態です。
JSONオブジェクトとして、操作できるようにするためには、どのようにコードを変更
すればよいでしょうか。

よろしくお願いします。

動作環境

Windows10
Visual Studio 2019
Express 4.16.4
node.js 8.11.3
TypeScript 3.4.5

該当のソースコード

TypeScript

1import * as mysql from 'mysql'; 2import express = require('express'); 3const router = express.Router(); 4 5const connection = mysql.createConnection({ 6 host: 'hoge', 7 user: 'hoge', 8 password: 'hoge', 9 database: 'hoge' 10}); 11 12router.get('/', (req: express.Request, res: express.Response) => { 13 const sampleQuery = 'SELECT * FROM elements;'; 14 connection.query(sampleQuery, function (error, results, fields) { 15 16 //クエリの結果をJSON形式に変換 17 var json = JSON.stringify(results); 18 19 //JSON形式のテキストデータをオブジェクトデータに変換 20 //しかし、これは思惑どうり動かないです。 21 json = JSON.parse(json); 22 23 //以下の行がエラーになります。 24 //オブジェクトとして、操作できる形に変換したいです。 25 console.log(json.ID); 26 }); 27}); 28 29export default router;

発生している問題・エラーメッセージ

(TS)プロパティ'ID'は型'string'に存在しません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SELECT文なので返ってくる結果は配列になってますので、1行目のIDカラムを参照したい場合はjson[0].IDのようになると思います。
更に言うならJSONにするくだりは不要です。

ts

1connection.query(sampleQuery, function (error, results, fields) { 2 console.log(results[0].ID); 3});

投稿2019/05/21 14:54

yhg

総合スコア2161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

user_h

2019/05/21 22:36

動かすことができました。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問