我是 mongodb 和 node.js 世界的新手。我有一个项目,其中我将 mongodb 代码放在路由中,并且在 server.js 中需要它。
现在在该模块中,我有一种方法可以返回一个集合中的所有条目(它有效)。
我正在尝试从 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);
});
});
};