Ionic 2 MEAN应用程序不会在获取请求时返回更新的数据

时间:2017-03-03 09:09:51

标签: mongodb angular express mongoose ionic2

我正在构建一个应用程序这个奇怪的问题。本质上是一个函数被调用我想在用户的当前游戏统计中读取 - 赢,输,抽等等 - 我这样做是使用一个服务创建一个可观察的并从我的其余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);
              });
      });
  }

这是我在函数中的调用。

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端点调用,虽然每次更新数据时都会有效。

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);
    });
});

对此的任何帮助都将非常感激,因为这让我发疯。

1 个答案:

答案 0 :(得分:1)

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

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