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

标签 node.js mongodb openshift mongojs

我正在openshift上尝试mongodb和nodejs,使用mongojs在nodejs和mongodb之间进行交互。

在 mongoshell 中,我运行了“use 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;

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

有人可以指出我做错了什么吗?数据库正在连接。我无法从乐谱集合中找到所有内容。

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

最佳答案

我认为你应该使用collection方法来使用你的分数集合。就像下面这样:

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)
}

关于node.js - 如何通过mongojs模块从nodejs查询mongodb? (服务器是openshift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594804/

相关文章:

elasticsearch - 弹性查询 bool 必须匹配问题

javascript - Node : Do I need to end HTTP requests to save memory/CPU?

javascript - 正确编写和导入自定义 Node 模块

node.js - 未处理的拒绝 SequelizeDatabaseError : Unknown column 'NaN' in 'field list'

javascript - 如何从包含数据库查询的 Node.js 函数返回值

mongodb - Meteor 如何从 mongo 数据库检索一系列问题并在应用程序中仅显示其中一个问题

mongodb - 与删除的成员形成一个新的副本集

javascript - mongo.db 更新可能有值或没有值的日期字段

python - pip install 在 OpenShift 中失败,错误信息为 Permission Denied

ssh - 在提示符下使用openshift在特定目录中打开ssh session