如何通过mongojs模块从nodejs查询mongodb? (服务器是openshift)

我在openshift上试用mongodb和nodejs,使用mongojs来连接nodej和mongodb。

在mongoshell中,我运行“使用nodejs”并定义了一个“scores”集合。 我保存了一些数据并正确显示。

在nodeserver的app.js文件中有

self.routes['/db'] = function(req, res) { var db = require("./db"); db.scores.find(function(err,docs){res.send(docs);}); }; 

并在我有db.js文件

 var dbName = "/nodejs"; var databaseUrl = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + ":" + process.env.OPENSHIFT_MONGODB_DB_PORT+ dbName; // "username:password@example.com/mydb" var collections = ["scores"] var db = require("mongojs").connect(databaseUrl, collections); module.exports = db; 

当我访问urlmydomain.com/db时,我无法获取任何数据

有人可以指出什么是做错了。 数据库正在连接。 我无法从分数集合中find全部。

 self.routes['/db'] = function(req, res) { var db = require("./db"); db.scores.find(function(err,docs){res.send(docs);}); }; 

我认为你应该使用收集方法来使用你的分数收集。 如下所示:

 db.collection('scores').find(function(err,docs){res.send(docs);}); 

或者使用toArray函数确保检索一个对象数组。

 db.collection('scores').find().toArray(function(err, docs) { console.dir(docs); res.send(docs) } 

这是我们如何连接到我们的MongoDB服务器:

 //app.js var databaseUrl = "mydb"; // "username:password@example.com/mydb" var collections = ["users"] var db = require("mongojs").connect(databaseUrl, collections); db.users.find({email: "abcd@gmail.com"}, function(err, users) { if( err || !users) console.log("No female users found"); else users.forEach( function(femaleUser) { console.log(femaleUser); } ); }); 

我保存在一个单独的文件中的数据库连接configuration是导致错误的那个。 这个configuration工作,我能够获取数据库条目。 使用注释掉的块或下面的代码。 两者都做同样的事情。 只是张贴这个答案谁尝试在openshift的任何人。

 self.routes['/db'] = function(req, res) { var dbName = "/nodejs"; var connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + ":" + process.env.OPENSHIFT_MONGODB_DB_PORT + dbName; var db = mongojs(connection_string); /* var b = db.collection('books'); db.b.find(function(err, docs) { res.send(docs); });*/ db.collection('books').find(function(err,docs){ res.send(docs); }); }; 

nodejs是存储集合“books”的数据库名称。 定义var mongojs = require('mongojs'); 在声明所有variables的最上面,但是如果在mongojsvariables被使用之前声明它并不重要。

使用MongoClient。

 //test is the database and students is the collection inside test. var MongoClient = require('mongodb').MongoClient; MongoClient.connect('mongodb://localhost:27017/test', function(err, db) { console.log("Successfully connected to MongoDB "); var cursor = db.collection('students').find({}); cursor.forEach( function(doc) { console.log("JSON doc: "+doc); }, function(err) { console.log("Error"); return db.close(); } ); });