Node.js 使用mongoose检索文档时未找到数据

Node.js 使用mongoose检索文档时未找到数据,node.js,mongodb,express,mongoose,openshift,Node.js,Mongodb,Express,Mongoose,Openshift,我有一个数据库:be\u meta和一个集合:be\u meta\u记录。我通过mongo shell将以下文档插入其中: { "_id" : ObjectId("90sd744628ba73a8199f9db6"), "be_id" : "74HHF411-9UI8-440C-UIOP-E907DAF9C93F", "item_title" : "Item 1", "item_description" : "item 1 description", "item_link" : "http://

我有一个数据库:
be\u meta
和一个集合:
be\u meta\u记录
。我通过
mongo shell
将以下文档插入其中:

{ "_id" : ObjectId("90sd744628ba73a8199f9db6"), "be_id" : "74HHF411-9UI8-440C-UIOP-E907DAF9C93F", "item_title" : "Item 1", "item_description" : "item 1 description", "item_link" : "http://stackoverflow.com/" }
我正在尝试通过mongoose访问相同的内容,使用以下代码:

server.js

var wagner = require('wagner-core');

require('./models')(wagner);

var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

var http = require('http');

app.use('/api/v1',require('./api')(wagner));

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
                              console.log('Express server listening on port ' + app.get('port'));
                              });

app.get('/', function (req, res) {
        res.send('APIs are ready :)');
        });
var express = require('express');
var status = require('http-status');

module.exports = function(wagner) {
    var api = express.Router();

    api.get('/be_meta_records/be_id/:be_id', wagner.invoke(function(BeMetaRecords){
                                                                   return function(req, res){
                                                                   console.log('be id ' + req.params.be_id);
                                                                   BeMetaRecords.findOne({be_id: req.params.be_id}, function(err, beMetaRecords) {
                                                                                         if(err){
                                                                                         return res.status(status.INTERNAL_SERVER_ERROR).json({error: err.toString()});
                                                                                         }
                                                                                         if(!beMetaRecords){
                                                                                         return res.status(status.NOT_FOUND).json({error: 'Not Found'});
                                                                                         }

                                                                                         res.json({be_meta_records: beMetaRecords});
                                                                                         });
                                                                   };
                                                                   }));

    return api;
};
var mongoose = require('mongoose');

module.exports = function(wagner){
    var connectionString = '127.0.0.1/be_meta';

    if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
        connectionString = 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;
    }

    mongoose.connect('mongodb://' + connectionString);

    var BeMetaRecords = mongoose.model('BeMetaRecords', require('./be_meta_records'));

    wagner.factory('BeMetaRecords', function(){
                   return BeMetaRecords;
                   });

    return  {
        BeMetaRecords : BeMetaRecords
    };
};
var mongoose = require('mongoose');

var beMetaRecordsSchema = {
    be_id : {type: String, required: true},
    item_title: {type: String, required: true},
    item_description : {type: String},
    item_link : {type: String}
};

module.exports = new mongoose.Schema(beMetaRecordsSchema);
module.exports.beMetaRecordsSchema = beMetaRecordsSchema;
api.js

var wagner = require('wagner-core');

require('./models')(wagner);

var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

var http = require('http');

app.use('/api/v1',require('./api')(wagner));

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
                              console.log('Express server listening on port ' + app.get('port'));
                              });

app.get('/', function (req, res) {
        res.send('APIs are ready :)');
        });
var express = require('express');
var status = require('http-status');

module.exports = function(wagner) {
    var api = express.Router();

    api.get('/be_meta_records/be_id/:be_id', wagner.invoke(function(BeMetaRecords){
                                                                   return function(req, res){
                                                                   console.log('be id ' + req.params.be_id);
                                                                   BeMetaRecords.findOne({be_id: req.params.be_id}, function(err, beMetaRecords) {
                                                                                         if(err){
                                                                                         return res.status(status.INTERNAL_SERVER_ERROR).json({error: err.toString()});
                                                                                         }
                                                                                         if(!beMetaRecords){
                                                                                         return res.status(status.NOT_FOUND).json({error: 'Not Found'});
                                                                                         }

                                                                                         res.json({be_meta_records: beMetaRecords});
                                                                                         });
                                                                   };
                                                                   }));

    return api;
};
var mongoose = require('mongoose');

module.exports = function(wagner){
    var connectionString = '127.0.0.1/be_meta';

    if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
        connectionString = 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;
    }

    mongoose.connect('mongodb://' + connectionString);

    var BeMetaRecords = mongoose.model('BeMetaRecords', require('./be_meta_records'));

    wagner.factory('BeMetaRecords', function(){
                   return BeMetaRecords;
                   });

    return  {
        BeMetaRecords : BeMetaRecords
    };
};
var mongoose = require('mongoose');

var beMetaRecordsSchema = {
    be_id : {type: String, required: true},
    item_title: {type: String, required: true},
    item_description : {type: String},
    item_link : {type: String}
};

module.exports = new mongoose.Schema(beMetaRecordsSchema);
module.exports.beMetaRecordsSchema = beMetaRecordsSchema;
models.js

var wagner = require('wagner-core');

require('./models')(wagner);

var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

var http = require('http');

app.use('/api/v1',require('./api')(wagner));

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
                              console.log('Express server listening on port ' + app.get('port'));
                              });

app.get('/', function (req, res) {
        res.send('APIs are ready :)');
        });
var express = require('express');
var status = require('http-status');

module.exports = function(wagner) {
    var api = express.Router();

    api.get('/be_meta_records/be_id/:be_id', wagner.invoke(function(BeMetaRecords){
                                                                   return function(req, res){
                                                                   console.log('be id ' + req.params.be_id);
                                                                   BeMetaRecords.findOne({be_id: req.params.be_id}, function(err, beMetaRecords) {
                                                                                         if(err){
                                                                                         return res.status(status.INTERNAL_SERVER_ERROR).json({error: err.toString()});
                                                                                         }
                                                                                         if(!beMetaRecords){
                                                                                         return res.status(status.NOT_FOUND).json({error: 'Not Found'});
                                                                                         }

                                                                                         res.json({be_meta_records: beMetaRecords});
                                                                                         });
                                                                   };
                                                                   }));

    return api;
};
var mongoose = require('mongoose');

module.exports = function(wagner){
    var connectionString = '127.0.0.1/be_meta';

    if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
        connectionString = 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;
    }

    mongoose.connect('mongodb://' + connectionString);

    var BeMetaRecords = mongoose.model('BeMetaRecords', require('./be_meta_records'));

    wagner.factory('BeMetaRecords', function(){
                   return BeMetaRecords;
                   });

    return  {
        BeMetaRecords : BeMetaRecords
    };
};
var mongoose = require('mongoose');

var beMetaRecordsSchema = {
    be_id : {type: String, required: true},
    item_title: {type: String, required: true},
    item_description : {type: String},
    item_link : {type: String}
};

module.exports = new mongoose.Schema(beMetaRecordsSchema);
module.exports.beMetaRecordsSchema = beMetaRecordsSchema;
be\u meta\u records.js

var wagner = require('wagner-core');

require('./models')(wagner);

var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

var http = require('http');

app.use('/api/v1',require('./api')(wagner));

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
                              console.log('Express server listening on port ' + app.get('port'));
                              });

app.get('/', function (req, res) {
        res.send('APIs are ready :)');
        });
var express = require('express');
var status = require('http-status');

module.exports = function(wagner) {
    var api = express.Router();

    api.get('/be_meta_records/be_id/:be_id', wagner.invoke(function(BeMetaRecords){
                                                                   return function(req, res){
                                                                   console.log('be id ' + req.params.be_id);
                                                                   BeMetaRecords.findOne({be_id: req.params.be_id}, function(err, beMetaRecords) {
                                                                                         if(err){
                                                                                         return res.status(status.INTERNAL_SERVER_ERROR).json({error: err.toString()});
                                                                                         }
                                                                                         if(!beMetaRecords){
                                                                                         return res.status(status.NOT_FOUND).json({error: 'Not Found'});
                                                                                         }

                                                                                         res.json({be_meta_records: beMetaRecords});
                                                                                         });
                                                                   };
                                                                   }));

    return api;
};
var mongoose = require('mongoose');

module.exports = function(wagner){
    var connectionString = '127.0.0.1/be_meta';

    if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
        connectionString = 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;
    }

    mongoose.connect('mongodb://' + connectionString);

    var BeMetaRecords = mongoose.model('BeMetaRecords', require('./be_meta_records'));

    wagner.factory('BeMetaRecords', function(){
                   return BeMetaRecords;
                   });

    return  {
        BeMetaRecords : BeMetaRecords
    };
};
var mongoose = require('mongoose');

var beMetaRecordsSchema = {
    be_id : {type: String, required: true},
    item_title: {type: String, required: true},
    item_description : {type: String},
    item_link : {type: String}
};

module.exports = new mongoose.Schema(beMetaRecordsSchema);
module.exports.beMetaRecordsSchema = beMetaRecordsSchema;
当我试图通过输入此url通过浏览器访问同一个url时:

http://127.0.0.1:8080/api/v1/be_meta_records/be_id/74HHF411-9UI8-440C-UIOP-E907DAF9C93F
我得到以下错误:

{"error":"Not Found"}
有什么想法吗

更新:在本地IP上工作

感谢@AlexBlex为我指明了正确的方向

我通过更新models.js中的以下代码行解决了本地IP的错误:

var BeMetaRecords = mongoose.model('BeMetaRecords', require('./be_meta_records'));
致:

更新:在OpenShift中不工作

当推送到openshift时,相同的代码不起作用,它显示相同的错误:

{"error":"Not Found"}

打开探查器,并检查应用程序发送到db的确切查询。嘿,我通过在localhost上检查配置文件信息解决了这个问题,但由于某些原因,openshift上的同一命令没有返回启动的db查询。有什么想法吗?