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

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

ただいまの
回答率

91.25%

  • CentOS

    2092questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Node.js

    1300questions

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

  • MongoDB

    207questions

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

streamを使ってドキュメントが抽出できない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 62

kasaburanka

score 113

お世話になります
ドットインストールでnodejsの勉強をしております。
https://dotinstall.com/lessons/basic_nodejs/26216
環境は下記の通りです
centos6.8
node -v
v9.2.1
mongo --version
MongoDB shell version v3.6.0
npm -v
5.5.1
mongo.js

const assert = require('assert');
const MongoClient = require('mongodb').MongoClient,
      settings = require('./settings');

MongoClient.connect("mongodb://localhost/"+settings.db, function(err, client) {
    if (err) { return console.dir(err); }
    console.log("connected to db");
    const db = client.db('nodedb');
    db.collection("users", function(err, collection) {
          assert.equal(err, null);
        var docs = [
            {name: "taguchi", score: 40},
            {name: "fkoji", score: 80},
            {name: "moriuchi", score: 60}
        ];
          /*
        collection.find({name: "taguchi"}).toArray( function(err, items) {
            console.log(items);
        });
        */
        var stream = collection.find().stream();
        stream.on("data", function(item) {
            console.log(item);
        });
        stream.on("end", function() {
            console.log("finished.")
        });
    });
    client.close();
});

collection.find({name: "taguchi"}).toArray( function(err, items) {
console.log(items);
});


この部分はきちんと表示出来ました
[vagrant@localhost nodejs]$ node mongo.js
connected to db
[ { _id: 5a31ce2b3df02d374d81d47e, name: 'taguchi', score: 40 } ]
しかし、streamを使うと
[vagrant@localhost nodejs]$ node mongo.js
connected to db
finished.
このようになり表示されません
原因は何なんでしょう
いろいろ調べましたが辿りつけませんでした
よろしくお願い致します

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

非同期処理のせいですね。
client.close()をコメントアウトすると最後まで実行して内容も出力されるはずです。

そうしないと、データを取り出して書き出す前に'end'が来るので、それが実行されてfinishedだけが表示されます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/15 19:15

    ありがとうございます。これでまた一つ勉強しました
    重ね重ね感謝申し上げます

    キャンセル

  • 2017/12/15 19:29

    こちらこそ。

    javascriptとその派生したnodejsはまったくもって恐ろしい言語です…
    何をやっても正常っぽい形で終了するせいで、何が問題だったのかすらなかなか突き止められませんね。

    キャンセル

  • 2017/12/18 14:53 編集

    まだまだ成長できていない私です。本当に初期ともいえないぐらいです。Macを使いはじめて日も浅いですが最近はMacの方が使いやすいと感じることもあり今さらにExpressでも躓いております。Version upしたらCyberduckが動かなくなり11月5日まで戻しました。再度復習を兼ねてNode.jsからやり始めています

    キャンセル

  • 2017/12/18 15:11

    アップデートといえば、
    スクリプト言語はバージョンに敏感です。
    nodenvなどを使ってバージョンを使い分けると今後の想定外のエラーを回避できるかもしれません。
    https://joppot.info/2016/10/17/3210

    ふっと、思い出したので。

    キャンセル

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

ただいまの回答率

91.25%

関連した質問

  • 解決済

    service mongod --dbpath /[PATH]/ で起動できない

    MongoDBについて質問です。 起動するとき、dbpathを指定したうえで起動しっぱなしにしてやりたいのですが、 service mongod --dbpath /[PA

  • 解決済

    MongoDBのエラー ERR TypeError: Cannot read property 'c...

    mongodbをローカルやクラウド上にディプロイする際に時たまエラーが起こり、ログにでてくるのが以下のものなのですが、MongoDBが下記のようなエラーを吐き出しやすい理由などある

  • 解決済

    mongooseでupdateしたい

    前提・実現したいこと 現在Nodejsからmongooseを使ってmongodb に対して,データの追加を行っています. 今回特定のidに対してデータの更新を行おうと考えまし

  • 解決済

    DBに指定したスキームでPOSTしたい

    前提・実現したいこと http://qiita.com/shopetan/items/58a62a366aac4f5faa20 のとおりに進めているのですが、うまくPOSTできませ

  • 解決済

    NodeとMongoDBの接続をしたい

    前提・実現したいこと JavaScript初学者です。よろしくお願いします。 Node.js(Express)でMongoDBとの接続をしたいと考えております。 このサイトを参考に

  • 解決済

    node mongo.jsでthrow err;が出る

    お世話になります DotinstallでNode.jsを勉強中です 15章 https://dotinstall.com/lessons/basic_nodejs/26215の部分

  • 解決済

    MongoDB3.xでdb.collection is not a function

    ご覧いただきありがとうございます。 ローカル開発環境を再構築して、いつも通りMongoDBにExpress×node.jsでfind()しようと思ったのですが、 タイトルにあるdb

  • 解決済

    mongoDBであるフィールドの値一覧を取得したい

    前提・実現したいこと mongoDBで、あるフィールドの値の種類一覧を取得したいです。 例えば、ageというフィールドの値の一覧が21,22,21,23のときに、21,22,23と

同じタグがついた質問を見る

  • CentOS

    2092questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Node.js

    1300questions

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

  • MongoDB

    207questions

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