0

JavaScript を使用してマップとグラフの視覚化のためにオンラインで更新される MongoDB のリアルタイム データにアクセスしたいと考えています。カーソルストリームを使用して、MongoDB Web サイトの例に従ってみます。コードは以下のとおりです。例によると、これは機能するはずですが、ノードは .stream() 部分を認識しません...

    var databaseUrl = "127.0.0.1/sensor_db2"; 

var collections = ["sensor"]
var db = require("mongojs").connect(databaseUrl, collections);


var stream = db.sensor.find().stream();

stream.on("data", function(item) {
    console.log(item);
});


stream.on('error', function (err) {
  console.error(err);
});

次に、次のようなエラー メッセージが表示されました。

    /Users/user/Documents/nodetest/nodetest.js:6
var stream = db.sensor.find().stream();
                              ^
TypeError: Object [object Object] has no method 'stream'
    at Object.<anonymous> (/Users/user/Documents/nodetest/nodetest.js:6:35)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
/Users/user/Documents/nodetest/nodetest.js:6
var stream = db.sensor.find().stream();
                              ^
TypeError: Object [object Object] has no method 'stream'
    at Object.<anonymous> (/Users/user/Documents/nodetest/nodetest.js:6:35)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
BlackBook:nodetest user$ node nodetest.js

node.js を使用して実行します。

誰でも何が問題なのかを助けることができますか? 同じことを達成するための他のアプローチはありますか?(mongodb からデータをロードし、リアルタイムチャートでデータを視覚化します)?

4

2 に答える 2

1

以前にmongojsを使用したことはありませんが、コレクションで.stream()関数を提供するネイティブmongoドライバーと、わずかに異なる方法でそれを提供するように見えるmongojsでストリームをクロスしようとしているようです。mongojs の git ハブ ページから、これでやろうとしていることを達成できるようです。

https://github.com/mafintosh/mongojs#streaming-cursors

最初の npm install JSONStream

var mongojs = require('mongojs');
var JSONStream = require('JSONStream');

var db = mongojs.connect(databaseUrl, collections);
// pipe all documents in mycollection to stdout
db.sensor.find({}).pipe(JSONStream.stringify()).pipe(process.stdout);

これをデータベースのコレクションで実行したところ、うまくいきました。頑張ってください。それが役に立ったことを願っています。

于 2013-09-29T14:20:50.110 に答える