【问题标题】:Data is updating in database but on frontend it is not displayed数据库中的数据正在更新,但在前端未显示
【发布时间】:2021-05-08 05:00:34
【问题描述】:

我正在更新我的用户详细信息并且详细信息正在更新,但是当我刷新我的页面时,旧的详细信息正在显示,但集合中的数据已更新。当我从应用程序注销并再次登录时,仅显示更新信息,但在刷新组件时不显示

export class UserProfileComponent implements OnInit {
  email: string = "";
  firstName: string = "";
  lastName: string = "";
  company: string = "";

  updateUser(): void {
    const userDetails = {
      firstName: this.firstName,
      lastName: this.lastName,
      company: this.company,
      email: this.email,
    };
    this.userService.updateUser(userDetails).subscribe(
      (response) => {
        this.firstName = response.user.name.first;
        this.lastName = response.user.name.last;
        this.company = response.user.company;
        console.log([this.firstName, this.lastName, this.company]);
      },
      (err) => {
        console.log(err);
      }
    );
  }
}

显示的html组件

<div class="info-details-form">
        <div class="info-form-control">
          <input
            type="text"
            [(ngModel)]="firstName"
            placeholder="First Name"
            name="firstName"
          />
        </div>
        <div class="info-form-control">
          <input
            type="text"
            [(ngModel)]="lastName"
            placeholder="Last Name"
            name="lastName"
          />
        </div>
        <div class="info-form-control">
          <input
            type="text"
            [(ngModel)]="company"
            placeholder="company"
            name="company"
          />
        </div>
        <div class="info-form-control">
          <input
            type="text"
            value="{{ email }}"
            placeholder="Email"
            readonly
            name="email"
          />
        </div>
        <div class="info-btn-control">
          <button class="cancel-btn">Cancel</button>
          <button class="main-btn" (click)="updateUser()">Save</button>
        </div>
      </div>
    </div>
  </div>

在后台更新用户的功能

 public static async updateUser(req, res, next) {
    try {
      const { firstName, lastName, email, company } = req.body.userDetails;
      const user = await User.findOne({ email: email });
      user.name.first = firstName;
      user.name.last = lastName;
      user.company = company;
      await user.save();
      res.json({
        token: jwt.encode(getJwtPayload(user), UserRoutes.JWT_SECRET),
        user,
      });
    } catch (error) {
      next(error);
    }
  }

【问题讨论】:

    标签: angular mongodb


    【解决方案1】:

    更新backend 上的文档时,请务必包含{new: true}。如果您不包含它,文档将被更新,但原始文档将被退回。你可以这样添加:

    db.collection.update({
      // Filter Query
    },
    {
      // Update
    },
    {
      "new": true
    })
    

    【讨论】:

    • 我给了更新用户的功能,我做错了什么
    • 好的,您的方法也应该有效。你能console.log()前端的结果并将其添加到问题中吗?
    • 在控制台中,我正在获取变量的更新值,它也反映在输入字段中,但只要我刷新旧值,字段中就会显示
    • 是否在某个时间点将数据放入localStoragesessionStorage
    • 是的,我的伙伴正在本地存储中存储
    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2020-02-28
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多