Mongoose回调在生产环境中返回空,但非空本地

时间:2016-07-07 06:42:25

标签: angularjs node.js mongodb express mongoose

我使用nodejsexpress设置了mongoose个应用程序。前端是AngularJS应用。 在我的本地计算机上运行时,express路由从MongoDB提供正确的结果,但在生产环境中,我得到一个空结果([])。

User架构定义如下:

var mongoose = require('mongoose');

module.exports = mongoose.model('Users', {
    Username : String,
    Password : String,
    UniqueID : String,
    Coordinates : Array
}, 'Users');

获得这些结果的express路线是:

app.get('/coordinates/:userId', function (req, res) {
    User.findOne({UniqueID: req.params.userId}, function (err, user) {
        if (err) res.send(err);
        else {
            res.send(user.Coordinates);
        }
    });
});

在我的本地计算机上收到回复:[{x: 0, y: 0}, {x: 25, y: 25}],但在服务器上我得到[]

使用以下AngularJS代码段调用路线:

$http.get('/coordinates/<userId>').then(function (response) {
        $scope.coordinates = !_.isEmpty(response.data) ? response.data : [];            
    }, function (response) {
    });

我不知道问题是什么。

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,这就是我为解决它而做的事情

  • 验证您的猫鼬版本和dev mongo版本
  • 验证您的mongoose和prod mongo版本是否兼容(我有一个不兼容的版本,并修复它有效)
  • 非常基本,我相信你会检查一下,但确认该表有数据!

答案 1 :(得分:0)

愚蠢的我,事实证明这是一个PEBCAK。不知何故,生产数据库包含2个具有相同UniqueID的用户(我知道不是很独特),而findOne只返回了我不期待的那个......