Mongoose不会更新数据库条目

时间:2012-06-25 17:48:40

标签: node.js mongodb express mongoose

我使用带有mongoose的express.js作为ODM。

我知道当其他服务器对mongoDB进行更新时,mongoose无法识别。所以仍然显示数据库的旧状态。

我认为这是因为mongoose在创建,更新新文档后使用回调来更新,但当另一个服务与mongoDB交互时,不会触发此回调。

那么我怎么能说明猫鼬没有自己创建的文件呢?

路由/ user.js的

var User = require('../models/user.js')
, requirements = { enabled: true, expired: false, locked: false };

exports.list = function(req, res){
    User.find(requirements, function(err, users){
        res.send(users);
    });
};

app.js

app.get('/users', user.list);

当我现在使用curl或使用浏览器访问/用户时,我将获得mongodb中所有用户的数组。那是直到现在。现在我在PHP环境中注册一个新用户。当我现在再次请求/用户时,如果没有over php创建的用户,我仍然可以获得与之前相同的数组!

当我现在重新启动节点服务并再次请求/用户时,php创建的用户就在那里....

1 个答案:

答案 0 :(得分:0)

express.js框架包括默认情况下为生产站点启用的视图缓存。我怀疑你的结果是缓存的,因为你已经包含了一个函数引用(user.list)而不是一个闭包,例如:

app.get('/users', function(req, res){
    User.find(requirements, function(err, users){
        res.send(users);
    });
});

视图缓存是一个全局设置,只应缓存视图模板,而不是视图的内容。有more granular caching的请求,但看起来这不是必需的。

您可以尝试使用以下方法禁用视图缓存:

app.disable('view cache');

搜索或要求澄清的好资源是Express.js Google Group