如何在Angular中从Node.js获取数据

时间:2019-12-24 08:30:01

标签: node.js angular

不从角度服务调用nodejs restapi。

users.component.ts

    editUser(){
    const updatedUser ={
      _id: this._id,
      name: this.name,
      email: this.email,
      mobile: this.mobile
    }
    console.log(updatedUser)
    this.usersService.updateUser(updatedUser)
    this.readUsers();
  }

users.service.ts

 updateUser(updatedUser){
    return this.http.post('http://localhost:3000/edit/' + updatedUser._id, updatedUser).pipe(
      map(res => res.json())
    )
  }

nodejs restapi

userRoutes.js

  const edituser = []
router.post('/edit/:id', (req, res) => {
    console.log('fromEditRoute')
    User.findByIdAndUpdate({_id : req.params.id}, req.body)
    .then(result => {
        edituser.push(result)
        res.json(edituser)
    })
    .catch(error => {
        console.log(error);
        res.status(500).json({message: 'An Error Occured'});
    })
    console.log('hello')
})
  路径中的

console.log()甚至都不会打印。

我们将尽一切帮助,谢谢!!

3 个答案:

答案 0 :(得分:2)

this.usersService.updateUser(updatedUser).subscibe(console.log);

您需要订阅才能触发该请求。默认情况下,可观察对象是惰性的。除非您订阅,否则执行不会开始。

答案 1 :(得分:0)

users.component.ts

   editUser(){
        const updatedUser ={
          _id: this._id,
          name: this.name,
          email: this.email,
          mobile: this.mobile
        }
        console.log(updatedUser)
        this.usersService.updateUser(updatedUser).subscribe((response: any)=> {
        console.log(response);
       })
        this.readUsers();
     }

答案 2 :(得分:0)

问题是因为您没有订阅API调用。管道不会订阅可观察者。一旦完成订阅,它将执行调用。否则它将挂起而没有给出响应。那就是为什么你没有得到任何回应

如下更改用户服务:

updateUser(updatedUser){
    return this.http.post('http://localhost:3000/edit/' + updatedUser._id, updatedUser).subscibe(console.log);
  }