我有一个使用 express
和 mongoose
的nodejs
应用程序。前端是一个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) {
});
我不知道问题可能是什么。
我有一个类似的问题,这就是我为解决它所做的
- 验证您的猫鼬版本和开发蒙戈版本
- 验证您的猫鼬和产品蒙戈版本是否兼容(我有一个不兼容的版本,修复它有效)
- 非常基本,我相信您会检查过,但请验证表是否有数据!
愚蠢的我,原来是PEBCAK。不知何故,生产数据库包含 2 个具有相同 UniqueID 的用户(我知道不是很唯一),而 findOne 只返回了我没想到的那个......