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

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

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4006閲覧

MongoDBをJSONで出力したい

RayNavarro

総合スコア18

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Node.js

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/04/18 14:29

node.js上のアプリでMongoDBからJSON形式でデータを出力したいんですけど上手く行きません。
mongooseを使っています。
下のソースコードのresult変数はJSON形式のデータを一時的に格納し後で出力するために使用しています。

recipes.find( {}, function( err, docs ){ result = JSON.stringify(docs); },this);

上のコードだとこのように出力されてしまいます。

[ {"_id":"5711e2837c9750e3052030b6","cocktail":"ジントニック","base":"ジン","ingredients":{"ジン":"20ml","トニックウォーター":"40ml","ライム":"3sp"},"detail":"ジントニックです。味わい爽やか","favorite_count":0}, {"_id":"5711e5387c9750e3052030b8","cocktail":"エンジェル","base":"ジン","ingredients":{"ジン":"40ml","ジンジャーエール":"適量","レモン":"20ml","クレーム・ド・カシス":"20ml"},"detail":"エル・ディアブロのさわやかバージョンです。味わい爽やか","favorite_count":0}, {"_id":"5711e6287c9750e3052030ba","cocktail":"テキーラ水割り","base":"テキーラ","ingredients":{"テキーラ":"40ml","水":"適量"},"detail":"テキーラ水割りです","favorite_count":0} ]

これを下記のように出力したいのですが
どのように実装すれば良いですか?
ちなみに"recipes"はコレクション名です。

{ "recipes":[ {"_id":"5711e2837c9750e3052030b6","cocktail":"ジントニック","base":"ジン","ingredients":{"ジン":"20ml","トニックウォーター":"40ml","ライム":"3sp"},"detail":"ジントニックです。味わい爽やか","favorite_count":0}, {"_id":"5711e5387c9750e3052030b8","cocktail":"エンジェル","base":"ジン","ingredients":{"ジン":"40ml","ジンジャーエール":"適量","レモン":"20ml","クレーム・ド・カシス":"20ml"},"detail":"エル・ディアブロのさわやかバージョンです。味わい爽やか","favorite_count":0}, {"_id":"5711e6287c9750e3052030ba","cocktail":"テキーラ水割り","base":"テキーラ","ingredients":{"テキーラ":"40ml","水":"適量"},"detail":"テキーラ水割りです","favorite_count":0} ] }

回答よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

mongooseのコールバック後、オブジェクトにプロパティを指定して代入すれば目的のresultになりませんか?

javascript

1recipes.find( {}, function( err, docs ){ 2 var resultObj = {}; 3 resultObj["recipes"] = JSON.stringify(docs); 4},this);

投稿2016/04/18 16:29

編集2016/04/18 16:30
bleurouge

総合スコア161

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

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

RayNavarro

2016/04/19 00:41 編集

回答ありがとうございます! router.get('/', function(req, res, next) { recipes.find( {}, function( err, docs ){ resultObj["recipes"] = JSON.stringify(docs); console.log(resultObj); //表示される },this); res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'}); res.write(resultObj); //なにも表示されないがresultObj["recipes"]だと表示される res.end(); }); 上がブラウザに出力する時のコードなのですが うまく表示されません console.log()だと表示されるのですが res.write()では表示されません 解決策があれば教えて下さい>< 追記 recipes.find( {}, function( err, docs ){ resultObj["recipes"] = docs; },this); として 出力の時に下のようにすることで無事表示できました。 res.write(JSON.stringify(resultObj)); ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問