Mongodb 离子2表示应用不';t在get请求时返回更新的数据

Mongodb 离子2表示应用不';t在get请求时返回更新的数据,mongodb,angular,express,mongoose,ionic2,Mongodb,Angular,Express,Mongoose,Ionic2,我正在构建的一个应用程序出现了一个奇怪的问题。本质上,调用了一个函数,我想读取用户当前的游戏统计数据——赢、输、平局等——我使用一个服务来实现这一点,该服务创建一个可观察的数据,并使用RESTAPI中的数据。在第一次调用此方法时,读入的数据是最新版本,但在此之后,我为数据库中的用户更新文档,然后当我再次执行此函数时,它会在更新之前读入原始文档。但是,当我检查数据库时,文档已经被更新了 这是我用来消费数据的提供程序函数 getUser(id) { if (this.data) {

我正在构建的一个应用程序出现了一个奇怪的问题。本质上,调用了一个函数,我想读取用户当前的游戏统计数据——赢、输、平局等——我使用一个服务来实现这一点,该服务创建一个可观察的数据,并使用RESTAPI中的数据。在第一次调用此方法时,读入的数据是最新版本,但在此之后,我为数据库中的用户更新文档,然后当我再次执行此函数时,它会在更新之前读入原始文档。但是,当我检查数据库时,文档已经被更新了

这是我用来消费数据的提供程序函数

  getUser(id) {
      if (this.data) {
          return Promise.resolve(this.data);
      }
      return new Promise(resolve => {
          this.http.get('https://pitchlife-hearts.herokuapp.com/api/users/' + id)
              .map(res => res.json())
              .subscribe(data => {
                  this.data = data;
                  resolve(this.data);
              });
      });
  }
app.post('/api/users/update', function (req, res) {
    // Update a user
    var options = {};
    User.update({_id : req.body._id }, {
        maroon_points: req.body.points,
        wins: req.body.wins,
        draws: req.body.draws,
        losses: req.body.losses
    }, options,
        function (err, user) {
        if (err)
            res.send(err);
        res.json(user);
    });
});
这是我在函数中的调用

play(challenger, opponent) {
       this.userService.getUser(_id).then((data) => {
                this.challenger_account = {
                    _id: data._id,
                    points: data.maroon_points,
                    wins: data.wins,
                    draws: data.draws,
                    losses: data.losses
                };
这是我的更新电话

    this.userService.updateUser(this.challenger_account);
这是我的api端点调用,尽管每次我更新数据时它都会起作用

  getUser(id) {
      if (this.data) {
          return Promise.resolve(this.data);
      }
      return new Promise(resolve => {
          this.http.get('https://pitchlife-hearts.herokuapp.com/api/users/' + id)
              .map(res => res.json())
              .subscribe(data => {
                  this.data = data;
                  resolve(this.data);
              });
      });
  }
app.post('/api/users/update', function (req, res) {
    // Update a user
    var options = {};
    User.update({_id : req.body._id }, {
        maroon_points: req.body.points,
        wins: req.body.wins,
        draws: req.body.draws,
        losses: req.body.losses
    }, options,
        function (err, user) {
        if (err)
            res.send(err);
        res.json(user);
    });
});

非常感谢您提供的任何帮助,因为这让我发疯。

您何时更新
getUser(id){…}
方法使用的
this.data
属性


由于第一次执行
getUser(id){…}
方法,
this.data
为空,因此发出http请求。但是在那之后,
this.data
的值总是返回的,但是如果您不手动更新它,它将始终是它设置的第一个值。

您何时更新
getUser(id){…}
方法使用的
this.data
属性?由于第一次执行
getUser(id){…}
方法,
this.data
为空,因此发出http请求。但在此之后,
this.data
的值始终会返回,但如果您不手动更新它,它将始终是它设置的第一个值。谢谢您,传奇人物!我没有意识到这是事实,但应该有,因为这是显而易见的。你能把这个贴出来作为答案吗,这样我就可以相信你了:)很高兴听到:)在那里,完成了,哈哈,有时候我们只需要让其他人看看代码就可以找到这些东西。。。