将输入数据从 Angular 传递到 NodeJS

Pass input data from Angular to NodeJS

我目前正在学习 MEAN 堆栈,我想知道如何将数据从 .html 中的输入传递到我的 nodeJS app.js ?

假设我有一个表格:

register.component.html:

  <form>
    <input type="text" name="surname">
    <input type="text" name="name">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="Register">
  </form>

我希望在提交时调用注册函数:

resister.component.ts :

register(){
    this.http.post('http://localhost:3001/login/' // etc )

  }

所以在我的 app.js 中:

app.post('/register', function(req, res){
    db.collection('users').insertOne({
        prenom : //inputs data,
        nom: //inputs data,
        email : //inputs data,
        password : //inputs data
    })
})

我的问题是:**如何将 .html 中输入的数据传递到 app.js? **

非常感谢,如果这个问题对你们大多数人来说都是菜鸟,我很抱歉,但我正在学习!

首先,您的表单应应用 two-way 绑定。

<form (ngSubmit)="register()">
    <input type="text" name="surname" [(ngModel)]="input.surname" />
    <input type="text" name="name" [(ngModel)]="input.name" />
    <input type="text" name="username" [(ngModel)]="input.username">
    <input type="password" name="password" [(ngModel)]="input.password" />
    <input type="submit" value="Register">
</form>

备选方案:与 Reactive form 合作。


在组件中,您应该为 input(表单)声明一个对象。将对象传递给 post 并确保您需要 .subsribe() 到 post API 请求并获得返回的响应以进行 success/failure 处理。

同时,根据您的 NodeJS 服务,API URL 应该是“/register”而不是“/login”。

input: any = {
    surname: "",
    name: "",
    username: "",
    password: "",
};

register(){
    this.http.post('http://localhost:3001/register', this.input)
        .subscribe(
            next => {
                // TO-DO Success event
            },
            error => {
                // TO-DO Error event
            });
}

而如果您使用 Reactive 表单,您将需要 FormBuilder 服务和 FormGroup 实例(不涉及太多,因为第一个 link 说明了使用它的流程)。

参考:Angular Post Request Example


不是 Node.JS 开发人员,但您的 back-end 服务实施应该是:

app.post('/register', function(req, res){
    db.collection('users').insertOne({
        prenom : req.body.surname,
        nom: req.body.surname,
        email : req.body.email,
        password : req.body.password
    })
})

从请求正文中获取值。

当然,在将记录保存到数据库之前,您的密码应该作为安全最佳实践进行加密。