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

问题描述:

我有一个nodejs应用程序使用expressmongoose。前端是一个AngularJS应用程序。 在我的本地机器上运行express路由从MongoDB给出正确的结果,但在生产环境中我得到一个空的结果([])。Mongoose回调在生产环境中返回空,但是非空本地

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

我不知道这个问题可能是什么。

我也有类似的问题,这是我做过什么来解决这个问题

  • 验证您的猫鼬版和开发蒙戈版本
  • 确认您的猫鼬和督促蒙戈版本兼容(我有一个不兼容的版本,并修复它的工作)
  • 非常基本的,我相信你会检查,但验证表中有数据!
+0

服务器使用的是比我本地env更老的mongodb,所以我改变了这一点,现在我得到一个空的响应本地以及...它看起来像数组没有取 – mmjmanders

+0

你更新哪mongo?你是否降级当地的mongo或升级产品mongo? – Srijith

+0

降级本地。看起来好像Array类型根本没有被获取。 – mmjmanders

愚蠢的我,它原来是一个PEBCAK。不知何故,生产数据库包含2个用户具有相同的UniqueID(不是很独特,我知道)和findOne返回的只是我没有料到的那一个...