从路由中检查成功变量并在 Angular 中进行比较
Checking success variable from routes and comparing it in Angular
我正在制作 MEAN 堆栈应用程序并且正在注册用户。在 routes.js 中,如果成功添加用户,我将返回一个 JSON 对象。
router.post('/register',(req,res,next)=>{
let newUser= new User({
name:req.body.name,
username:req.body.username,
email:req.body.email,
password:req.body.password
});
User.addUser(newUser,(err,user)=>{
if(err)
{
res.json({success:false,msg:'Failed to Register User'});
}
else
{
res.json({success:true,msg:'Registered Sucessfully'});
}
})})
现在 angular 我想检查是否返回成功 true 并显示 Flash 消息,但我收到一个奇怪的错误
Property 'success' Doesnot Exist On Type 'object'
this.authService.registerUser(user).subscribe(data=>{
console.log(data);
if(data.success) //<---- PROPERTY 'success' DOESNOT EXIST ON TYPE 'object'
{
this.flashMessage.show("You are now Registered and Can LogIN",{cssClass:'alert-sucess',timeout:3000});
this.router.navigate(['/login']);
}
else
{
this.flashMessage.show("Something Went Wrong",{cssClass:'alert-danger',timeout:3000});
this.router.navigate(['/register']);
}
})
这是我的服务class
registerUser(user){
let headers= new HttpHeaders().set('Content-Type','application/json');
return this.http.post('http://localhost:3000/api/register',user,{headers:headers})}
但即使有这条消息,我也能够将用户添加到数据库中。这就是 console.log 返回的内容
由于静态类型安全检查,这是一个打字稿编译器错误。您可以使用 any
关键字通知编译器不需要静态类型检查,如下所示。
this.authService.registerUser(user).subscribe( (data: any) => {
...
需要方括号,否则编译器会假定 any
是 return 数据类型。
应用程序仍然可以工作,因为 JavaScript 是一种动态语言,在运行时查找属性并且运行时能够成功查找 success
属性。 TypeScript 编译器在将 TypeScript 编译为 JavaScript 时会去除所有类型注释。你可以看到打字稿编译器是如何工作的here
我正在制作 MEAN 堆栈应用程序并且正在注册用户。在 routes.js 中,如果成功添加用户,我将返回一个 JSON 对象。
router.post('/register',(req,res,next)=>{
let newUser= new User({
name:req.body.name,
username:req.body.username,
email:req.body.email,
password:req.body.password
});
User.addUser(newUser,(err,user)=>{
if(err)
{
res.json({success:false,msg:'Failed to Register User'});
}
else
{
res.json({success:true,msg:'Registered Sucessfully'});
}
})})
现在 angular 我想检查是否返回成功 true 并显示 Flash 消息,但我收到一个奇怪的错误
Property 'success' Doesnot Exist On Type 'object'
this.authService.registerUser(user).subscribe(data=>{
console.log(data);
if(data.success) //<---- PROPERTY 'success' DOESNOT EXIST ON TYPE 'object'
{
this.flashMessage.show("You are now Registered and Can LogIN",{cssClass:'alert-sucess',timeout:3000});
this.router.navigate(['/login']);
}
else
{
this.flashMessage.show("Something Went Wrong",{cssClass:'alert-danger',timeout:3000});
this.router.navigate(['/register']);
}
})
这是我的服务class
registerUser(user){
let headers= new HttpHeaders().set('Content-Type','application/json');
return this.http.post('http://localhost:3000/api/register',user,{headers:headers})}
但即使有这条消息,我也能够将用户添加到数据库中。这就是 console.log 返回的内容
由于静态类型安全检查,这是一个打字稿编译器错误。您可以使用 any
关键字通知编译器不需要静态类型检查,如下所示。
this.authService.registerUser(user).subscribe( (data: any) => {
...
需要方括号,否则编译器会假定 any
是 return 数据类型。
应用程序仍然可以工作,因为 JavaScript 是一种动态语言,在运行时查找属性并且运行时能够成功查找 success
属性。 TypeScript 编译器在将 TypeScript 编译为 JavaScript 时会去除所有类型注释。你可以看到打字稿编译器是如何工作的here