【问题标题】:Mongoose callback returns empty on production environment but non-empty localMongoose 回调在生产环境中返回空,但本地非空
【发布时间】:2016-07-07 16:47:17
【问题描述】:

我有一个使用expressmongoosenodejs 应用程序。前端是一个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 sn-p 调用路由:

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

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

【问题讨论】:

    标签: angularjs node.js mongodb express mongoose


    【解决方案1】:

    我遇到了类似的问题,这就是我为解决它所做的工作

    • 验证您的 mongoose 版本和 dev mongo 版本
    • 验证您的 mongoose 和 prod mongo 版本是否兼容(我有一个不兼容的版本,并且修复它有效)
    • 非常基本,我相信您会检查过,但请验证表格是否有数据!

    【讨论】:

    • 服务器使用的是比我的本地环境更旧的 mongodb,所以我改变了它,现在我在本地也得到一个空响应......似乎没有获取数组
    • 你更新了哪个mongo?您是降级本地 mongo 还是升级 prod mongo?
    • 降级本地。似乎根本没有获取 Array 类型。
    • 好的...所以不要降级本地,而是重新放回去。并验证它的工作。然后升级生产以使用相同的 mongo 版本
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2010-10-16
      • 2015-01-30
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      相关资源
      最近更新 更多