Mongoose回调在生产环境中返回空,但是非空本地
问题描述:
我有一个nodejs
应用程序使用express
和mongoose
。前端是一个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) {
});
我不知道这个问题可能是什么。
答
我也有类似的问题,这是我做过什么来解决这个问题
- 验证您的猫鼬版和开发蒙戈版本
- 确认您的猫鼬和督促蒙戈版本兼容(我有一个不兼容的版本,并修复它的工作)
- 非常基本的,我相信你会检查,但验证表中有数据!
答
愚蠢的我,它原来是一个PEBCAK。不知何故,生产数据库包含2个用户具有相同的UniqueID(不是很独特,我知道)和findOne返回的只是我没有料到的那一个...
服务器使用的是比我本地env更老的mongodb,所以我改变了这一点,现在我得到一个空的响应本地以及...它看起来像数组没有取 – mmjmanders
你更新哪mongo?你是否降级当地的mongo或升级产品mongo? – Srijith
降级本地。看起来好像Array类型根本没有被获取。 – mmjmanders