【问题标题】:How to get one data from database by id (MEAN Stack)?如何通过 id (MEAN Stack) 从数据库中获取一个数据?
【发布时间】:2020-07-23 18:02:48
【问题描述】:

我正在 MEAN 堆栈中创建一个应用程序,您可以在其中上传要出售和出租的房产。我想为每个上传的属性创建一个页面。为此,我需要通过 id 从数据库中获取该属性。我可以在后端服务器上获取它,但在前端看不到它。我上传了代码,方便大家理解。

后端代码,user.js

router.get("/:id", (req, res, next) => {
  let loggedInUser;
  User.findById(req.params.id).then(user => {
    if (user) {
      loggedInUser = user;
      console.log(loggedInUser);
      res.json({
        email: user.email,
        firstName: user.firstName,
        lastName: user.lastName,
        phone: user.phone,
        image: user.image,
        jobTitle: user.jobTitle
      });
    } else {
      res.status(404).json({ message: "User not found!" });
    }
  });
});

在 auth.service.ts 中

private userData: LoggedInUser;

getUser(id: string){
    let loggedInUser: LoggedInUser;
    this.http.get<{user: any}>("http://localhost:3000/api/user/" + id)
    .subscribe(response => {
      loggedInUser = response.user;
      this.userData = loggedInUser;
    });
    console.log(this.userData);
  }

在这里,当我 console.log 时,我得到了 undefined。

我只是在 userhome.component.ts 中运行 getUser 方法。

ngOnInit() {
    this.authService.getUser(this.id);
  }

非常感谢任何帮助!

【问题讨论】:

  • 您的控制台日志在订阅之后出现,这是一种异步方法。这意味着您的控制台日志被称为before 实际请求完成。尝试将您的 console.log 移动到下标回调中,紧随 this.userData = loggedInUser;
  • 它也以这种方式输出 undefined。

标签: javascript node.js angular server mean-stack


【解决方案1】:

由于您已声明与端点响应匹配的对象表示,因此此代码 sn-p 应该可以正常工作。我建议你试试看。

private userData: LoggedInUser;

getUser(id: string) {
  this.http.get < LoggedInUser > ("http://localhost:3000/api/user/" + id)
    .subscribe(response => {
      this.userData = response.user;
      console.log(this.userData);
    });

}

【讨论】:

  • 它仍然输出未定义。但我想,您错过了用户:在 http get 请求的类型声明中的类型 LoggedInUser 之前。因为如果它不存在,我会收到一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-01-07
  • 2018-08-01
  • 2021-02-15
相关资源
最近更新 更多