Передать входные данные из Angular в 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>

И я хотел бы, чтобы при отправке он вызывал функцию регистрации:

резистор.компонент.тс :

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? **

Большое спасибо, извините, если этот вопрос покажется большинству из вас нубом, но я учусь! ?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, ваша форма должна применять двустороннюю привязку.

<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>

Альтернатива: работайте с реактивная форма.


В компоненте вы должны объявить объект для input (формы). Передайте объект в публикацию и убедитесь, что вам нужно .subsribe() опубликовать запрос API и получить возвращенный ответ для обработки успеха/неудачи.

Между тем URL-адрес API должен быть «/register», а не «/login» в зависимости от вашей службы NodeJS.

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

В то время как, если вы работаете с реактивной формой, вам потребуются FormBuilder сервис и FormGroup экземпляр (не слишком много, поскольку первая ссылка иллюстрирует процесс его использования).

Ссылка: Пример почтового запроса Angular


Не являюсь разработчиком Node.JS, но ваша реализация серверной службы должна быть:

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
    })
})

чтобы получить значение из тела запроса.

И, конечно же, ваш пароль должен быть зашифрован в соответствии с рекомендациями по безопасности перед сохранением записи в базе данных.

На самом деле это выглядит многообещающе, большое спасибо. Хотя он не добавляет данные к «вводу», он просто регистрирует некоторые пустые поля. Может быть, потому, что вы не можете использовать this.http.post('локальный: 3001/регистр', input) Но мы нужно использовать this.http.post('локальный: 3001/регистр', this.input) Извините за форматирование, оно не работает так же, как сообщение ?

Antoine Pascual 15.05.2022 09:06

Да, вы правы, объявление переменной в компоненте должно использовать this (this.input) для доступа к значению. Если только при объявлении переменной в области действия функции не требуется this. Спасибо за исправление.

Yong Shun 15.05.2022 09:09

Не за что :) Так вот, похоже не забивает данные во ввод: any = { prenom: "", nom: "", email: "", password: "", };

Antoine Pascual 15.05.2022 09:25

Виноват. Должно быть [(ngModel)] (двусторонняя привязка), а не [ngModel] (односторонняя привязка). Демо

Yong Shun 15.05.2022 09:30

Другие вопросы по теме