【发布时间】: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