私は 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);
});
});
};