1

私は mongodb と node.js の世界に不慣れです。mongodb コードをルートに配置するプロジェクトがあり、server.js でそれが必要です。

現在、そのモジュールには、1 つのコレクション内のすべてのエントリを返す 1 つのメソッドがあります (動作します)。

私はserver.jsファイルからその関数を呼び出そうとしていますが、通常、関数を実行して出力を返すのではなく、関数を出力する応答になります!!

例 :

  var http = require('http'),
  location = require('./routes/locations');
  http.createServer(function (request, response) {
     response.writeHead(200, {'Content-Type': 'text/plain'});
     response.write(location.findAll() + '');
     response.end();
 }).listen(8080);

UI を 8080 に向けると、location.findall の出力を取得したいのですが、代わりに未定義のメッセージが表示され、ノードで次の例外が発生します。

  TypeError: Cannot call method 'send' of undefined

これはおそらく初心者の質問であることはわかっています。私はJava、.NET、およびiOSの世界から来ています。ごめん!!

更新:さらに明確にするために、これがroutes/locations.jsにあるものです

 var mongo = require('mongodb');
 var Server = mongo.Server,
 Db = mongo.Db,
 BSON = mongo.BSONPure;
 var server = new Server('localhost', 27017, {auto_reconnect: true});
 db = new Db('locationsdb', server);
 db.open(function(err, db) {
     // initlization code    
  });

 exports.findAll = function(req, res) {
 db.collection('locations', function(err, collection) {
    collection.find().toArray(function(err, items) {
         res.send(items);
     });
  });
 };
4

2 に答える 2

0
  • 実際に関数を呼び出す必要があります。
  • 非同期だと思いますfindAllので、関数を非同期で使用する必要があります

ファイルの内容はわかりませんroute/locationsが、おそらく次のようになります。

var http = require('http'),
location = require('./routes/locations');
http.createServer(function (request, response) {
    location.findAll(function(err, locations) {
        response.writeHead(200, {'Content-Type': 'text/plain'});
        response.write(locations);
        response.end();
    });
}).listen(8080);
于 2013-05-15T19:00:47.920 に答える
0

よくわかりませんが、試してみてください

response.write(location.findAll() + '');
于 2013-05-15T19:01:11.223 に答える