1.やりたい事: Node.jsを使ってMySQLのデータをGraphQLで公開したい
2.躓いているところ: mysqlのconnection.queryのコールバック関数の中で、mysqlから取得したjsonでjson.filterを実行しようとすると、dataがnullで返却される
Nodejs
1var express = require('express'); 2var express_graphql = require('express-graphql').graphqlHTTP; 3var { buildSchema } = require('graphql'); 4var mysql = require('mysql'); 5 6var schema = buildSchema(` 7 type Query { 8 address(zip_code: String!): Address 9 }, 10 type Address { 11 zip_code: String 12 pref_name: String 13 city_name: String 14 town_name: String 15 area_name: String 16 } 17`); 18 19var getAddress = function(args){ 20 21 var zip_code = args.zip_code; 22 23 const connection = mysql.createConnection({ 24 host: 'localhost', 25 user: 'hoge', 26 password: 'fuga', 27 database: 'foo' 28 }); 29 connection.query( 30 'SELECT * FROM master_zip', 31 (error, results) => { 32 var db_results = JSON.parse(JSON.stringify(results)); 33 34 return db_results.filter(address => { 35 return address.zip_code == zip_code; 36 })[0]; 37 } 38 ); 39} 40var root = { 41 address: getAddress 42}; 43 44var app = express(); 45app.use('/graphql', express_graphql({ 46 schema: schema, 47 rootValue: root, 48 graphiql: true 49}));
query
1query getSingleAddress($zip_code: String!) { 2 address(zip_code: $zip_code) { 3 pref_name 4 city_name 5 } 6}
variable
1{ 2 "zip_code": "1000001" 3}
result
1{ 2 "data": { 3 "address": null 4 } 5}
connection.queryの中では書くべきではないのでしょうか?
間違っている点や良い方法など教えて頂きたいです。
あなたの回答
tips
プレビュー