代码之家  ›  专栏  ›  技术社区  ›  Shivam

检查routes中的success变量,并在

  •  0
  • Shivam  · 技术社区  · 6 年前

    我正在制作meanstack应用程序,我正在注册用户。在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'});
        }
    })})
    

    现在,我想检查是否返回并显示success true 但我收到一个奇怪的错误

    类型“object”上不存在属性“success”

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

    这是我的 服务

    registerUser(user){
    let headers= new HttpHeaders().set('Content-Type','application/json');
    return this.http.post('http://localhost:3000/api/register',user,{headers:headers})}
    

    logs

    1 回复  |  直到 6 年前
        1
  •  0
  •   Avin Kavish    6 年前

    这是由于静态类型安全检查导致的typescript编译器错误。您可以通知编译器使用 any 关键字,如下所示。

    this.authService.registerUser(user).subscribe( (data: any) => {
    ...
    

    括号是必要的,否则编译器会假定 任何 返回数据类型。

    应用程序仍然可以工作,因为JavaScript是一种动态语言,在运行时查找属性,并且运行时能够成功地查找 success here