Node.js Mongoose不更新数据库条目

Node.js Mongoose不更新数据库条目,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我使用express.js和mongoose作为ODM 我知道有人提到过,当其他serives对mongoDB进行更新时,mongoose并没有意识到这一点。所以仍然显示数据库的旧状态 我认为这是因为mongoose在创建、更新新文档后使用回调进行更新,但当另一个服务与mongoDB交互时,不会触发此回调 那么,我怎么能说猫鼬在照看自己创建的文档呢 routes/user.js app.js 当我现在使用curl或浏览器访问/users时,我得到了mongodb中所有用户的数组。直到现在都是这样

我使用express.js和mongoose作为ODM

我知道有人提到过,当其他serives对mongoDB进行更新时,mongoose并没有意识到这一点。所以仍然显示数据库的旧状态

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

那么,我怎么能说猫鼬在照看自己创建的文档呢

routes/user.js

app.js

当我现在使用curl或浏览器访问/users时,我得到了mongodb中所有用户的数组。直到现在都是这样。现在,我在PHP环境中注册了一个新用户。当我现在再次请求/users时,我仍然得到与以前相同的数组,没有使用overphp创建的用户


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

express.js框架包括视图缓存,默认情况下,该缓存是为生产站点启用的。我怀疑您的结果正在被缓存,因为您包含了函数引用user.list而不是闭包,例如:

app.get('/users', function(req, res){
    User.find(requirements, function(err, users){
        res.send(users);
    });
});
视图缓存是一个全局设置,应该只缓存视图模板,而不是视图的内容。有一个请求,但看起来这不是必需的

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

app.disable('view cache');

搜索或要求澄清的一个好资源是。

您关于Mongoose API的断言并不总是反映数据库的当前状态,这是不正确的。当然,以前查询的结果不会反映对数据库所做的任何外部更改,因为查询是执行的,但是任何新的find查询肯定会。您关心的具体情况是什么?听起来问题可能是express.js中的视图缓存。您可以尝试应用程序。禁用“查看缓存”;看看是否是这样。就是这样:。使用node.js作为通信API时,禁用视图缓存是默认行为吗?
app.get('/users', function(req, res){
    User.find(requirements, function(err, users){
        res.send(users);
    });
});
app.disable('view cache');