【问题标题】:Mongoose find() takes a few minutes before it returns latest documentsMongoose find() 需要几分钟才能返回最新文档
【发布时间】:2018-10-03 21:45:38
【问题描述】:

如果我将文档添加到数据库(通过我的应用程序,或通过数据库管理工具 RockMongo),我会立即看到文档被添加到数据库(如 RockMongo 所示),没问题。但是,当我在相应的 Mongoose 模型上调用简单的model.find() 时,不会返回数据库的最新添加内容。它们最终会在几分钟后出现。

看起来文档是从某种没有保持更新的缓存/缓冲区中读取的。 Mongoose 中是否有类似的东西我忽略了?

我的后端是这样的:

var mongoose = require('mongoose');
require('./models/Locations');
mongoose.Promise = global.Promise;
mongoose.connect(mongoUrl,{ config: { autoIndex: false } });
var Locations = mongoose.model('Locations');
[...]
app.get('/locations', function(req, res, next) 
{
    Locations.find(function(err, results)
    {
        if(err){return res.status(500).json(err);}
        res.json(results);
    });
});

型号:

var mongoose = require('mongoose');

var LocationsSchema = new mongoose.Schema({
    name: String
});

mongoose.model('Locations', LocationsSchema);

如果我在数据库中手动将一个项目添加到 Locations,并将我的浏览器指向 /locations,直到几分钟后我才能看到新项目...

【问题讨论】:

  • 默认情况下不是。你能分享你的堆栈/配置/代码吗?
  • 我有一个基于 MEAN 构建的应用程序,带有 mongoldb v2.4.10、node v6、mongoose v4.6。我将用一些代码编辑问题。奇怪的是,我的应用在我的机器上运行良好,但在我设置的 Gandi 实例上却不行......
  • MongoDB 已经很老了。看看这里,也许这是一个线索mongoosejs.com/docs/compatibility.html
  • 这可以解释为什么我的本地设置有效,因为我运行的是 v3.2.3...我什至没有想过要检查,因为我假设在 Gandi 上创建一个实例会使用相对较新的 mongoDB默认版本
  • 这回答了你的问题吗?

标签: node.js mongodb mongoose mean-stack


【解决方案1】:

改变这个:

Locations.find(function(err, results)
{
    if(err){return res.status(500).json(err);}
    res.json(results);
});

到这里:

Locations.find({},function(err, results)
{
    if(err){return res.status(500).json(err);}
    res.json(results);
});

【讨论】:

    【解决方案2】:

    已经很久了,但我注意到我从未回答过这个问题,所以我想我可能会以防其他人遇到这个问题。不过,它对我的​​设置非常具体。问题是,Gandi 使用缓存引擎 (Varnish),默认设置相对激进,导致我在 web 应用程序中看到更新缓慢。

    为了解决这个问题,可以显式设置一个标头来停用缓存,例如:

    res.setHeader('Cache-Control', 'max-age=0');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多