在Openshift迁移后,MongoDB查询返回空结果

时间:2015-10-21 19:30:41

标签: node.js mongodb socket.io openshift

我遇到以下问题:我的应用程序在localhost上正常运行,但在我的Openshift平台上运行不正确。

我有一个MongoDB数据库,NodeJS后端使用socket.io。

这是连接到我的数据库的URL:

var connection_string = '127.0.0.1:27017/db';

if (process.env.OPENSHIFT_MONGODB_DB_PASSWORD) {
   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 + '/' +
   process.env.OPENSHIFT_APP_NAME;
}

这是我连接数据库的方式: mongodb.MongoClient.connect("mongodb://" + connection_string, function(err, db) {

这是我的socket连接方式(Openshift case): var socket = io.connect("http://nodejs-myapp.rhcloud.com:8000"); //io(); for localhost case

这是我正在做的查询:

db.collection('tobaccoStores').ensureIndex({Coordinates:"2dsphere"}).then(function(result) {
    db.collection('tobaccoStores').find({
                "Coordinates": {$near:
                                {$geometry:
                                    {type:"Point", coordinates:[coords.coords.lng, coords.coords.lat]},
                                  $maxDistance: coords.maxdistance
                                }
                }
            })

因此,当在localhost上运行时,我的查询会返回正确的结果,但不会返回到我的Openshift应用程序。此外,当我在我的Openshift应用程序的mongo shell中运行查询时,也会返回正确的结果......

1 个答案:

答案 0 :(得分:0)

发现问题:在我的nodejs应用程序中,我连接到的数据库与您在Openshift服务器上运行mongo时默认连接的数据库不同。我的数据不在正确的数据库中......没有注意这些细节。