node.js - Angular 6 + NodeJS + MongoDB

标签 node.js angular mongodb forms post

您好,在这里搜索后我找不到任何东西。 2个类似问题尚未得到解答。 我是新来的,如果您能帮助我完成最终项目或引导我解决问题,我会非常高兴。

运行 ngForm 后,我无法发布和接收以下错误:

zone.js:2969 POST http://localhost:4200/signup 404 (Not Found)
core.js:1624 ERROR 

我的表单位于其他组件内,我的路由如下所示:

  {
path: 'signup',
component: SignUpComponent,
data: { title: 'signup' },
children: [ 
  {path: '', component: RegistrationComponent},
  {path: 'userSettings', component: UserSettingsComponent}, 
  {path: 'userSettings/finish', component: FinishComponent},
]},

注册.Component.html

<div class="panel panel-primary">
<div class="panel-heading">
  {{ test }}
</div>
<div class="panel-body">
    <form [formGroup]="angForm" novalidate>

        <div class="form-group">
            <label class="col-md-4">inputfirstname</label>
            <input type="text" class="form-control" formControlName="inputfirstname" #inputfirstname />
        </div>
        <div *ngIf="angForm.controls['inputfirstname'].invalid && (angForm.controls['inputfirstname'].dirty || angForm.controls['inputfirstname'].touched)" class="alert alert-danger">
            <div *ngIf="angForm.controls['name'].errors.required">
                Name is required.
            </div>
        </div>

        <div class="form-group">
            <label class="col-md-4">lastname</label>
            <input type="text" class="form-control" formControlName="inputlastname" #inputlastname/>
        </div>
        <div *ngIf="angForm.controls['inputlastname'].invalid && (angForm.controls['inputlastname'].dirty || angForm.controls['inputlastname'].touched)" class="alert alert-danger">
             <div *ngIf="angForm.controls['inputlastname'].errors.required">
                 LastName is required.
            </div>
        </div>

        <div class="form-group">
            <label class="col-md-4">inputEmail</label>
            <input type="text" class="form-control" formControlName="inputEmail" #inputEmail/>
        </div>
        <div *ngIf="angForm.controls['inputEmail'].invalid && (angForm.controls['inputEmail'].dirty || angForm.controls['inputEmail'].touched)" class="alert alert-danger">
            <div *ngIf="angForm.controls['inputEmail'].errors.required">
                inputEmail is required.
            </div>
        </div>

    <div class="form-group">
        <label class="col-md-4">inputPassword</label>
        <input type="text" class="form-control" formControlName="inputPassword" #inputPassword/>
    </div>
    <div *ngIf="angForm.controls['inputPassword'].invalid && (angForm.controls['inputPassword'].dirty || angForm.controls['inputPassword'].touched)" class="alert alert-danger">
        <div *ngIf="angForm.controls['inputPassword'].errors.required">
            inputPassword is required.
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-4">confirmPassword</label>
        <input type="text" class="form-control" formControlName="confirmPassword" #confirmPassword/>
    </div>
    <div *ngIf="angForm.controls['confirmPassword'].invalid && (angForm.controls['confirmPassword'].dirty || angForm.controls['confirmPassword'].touched)" class="alert alert-danger">
        <div *ngIf="angForm.controls['confirmPassword'].errors.required">
            confirmPassword is required.
        </div>
    </div>
      <div class="form-group">
        <button (click)="addUser(inputfirstname.value, inputlastname.value,inputEmail.value,inputPassword.value,confirmPassword.value)" [disabled]="angForm.pristine || angForm.invalid" class="btn btn-primary">Add</button>
      </div>
  </form>
</div>

注册.component.js

import { Component, OnInit, NgModule } from '@angular/core';
import { FormGroup,  FormBuilder,  Validators } from '@angular/forms';
//import users class
import {UserService} from './../../user.service'

@Component({
  selector: 'app-registration',
  templateUrl: './registration.component.html',
  styleUrls: ['./registration.component.css']
})

export class RegistrationComponent implements OnInit {
  angForm: FormGroup;

  constructor(private userservice: UserService, private fb: FormBuilder) { 
    this.createForm();
  }

  //user form
  createForm() {
    this.angForm = this.fb.group({
      inputfirstname: ['', Validators.required ],
      inputlastname: ['', Validators.required ],
      inputEmail: ['', Validators.required ],
      inputPassword: ['', Validators.required ],
      confirmPassword: ['', Validators.required ]
   });
  }

  addUser(inputfirstname, inputlastname, inputEmail, inputPassword, confirmPassword ) {
    this.userservice.addUser(inputfirstname, inputlastname, inputEmail, inputPassword, confirmPassword);
  }
  ngOnInit() {
        // //Create a new user object
        // this.user = new user({
        //   firstname:"",lastname:"",email:"", password: { pwd: "" , confirm_pwd: ""}, terms:false})


  }

}

用户.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { FormGroup,  FormBuilder,  Validators } from '@angular/forms';

@Injectable()
export class UserService {

  constructor(private http: HttpClient) { }

  addUser(inputfirstname, inputlastname, inputEmail, inputPassword, confirmPassword) {
    const uri = 'http://localhost:4200/signup';
    const obj = {

    inputfirstname: inputfirstname,
    inputlastname: inputlastname,
    inputEmail: inputEmail, 
    inputPassword: inputPassword,
    confirmPassword: confirmPassword
    };
    this.http.post(uri, obj)
        .subscribe(res => console.log('Done'));
  }
}

服务器端的singup.js

var express = require('express');
//var router = express.Router();
var router =express();

var registrationSchema = require('../models/Registration.js');


/* GET users listing. */
// router.get('/', function(req, res, next) {
//   console.log(registrat);
// });

// Defined store route
router.route('/next').post (function(req,res){
  var registerData = new registrationSchema(req.body);
  registerData.save().then(item=>{
    res.status(200).json({'registerData': 'data added successfully'});
  })
  .catch(err => {
    res.status(400).send("unable to save to database");
    });
  })

  // Defined get data(index or listing) route
router.route('/').get(function (req, res) {
  console.log(req.body);
  registrationSchema.find(function (err, data){
   if(err){
     console.log(err);
   }
   else {
     res.json(data);
     }
   });
});

//registration
router.route('/signup').post (async function (req, res) {

  //to add validation?

  //create new user
  var newUser = new registrationSchema(req.body);
  console.log('req.body');
  var isCreated = await registrationSchema.inputData(newUser).then(result =>{
    if (result)
    {
      console.log(isCreated);
      res.status(200).send({success:true,message:"User Created!"})
    }
    else
      console.log(err);
  }) 
})

//login
router.route('/login'), async function (req, res){

}


module.exports = router;

我想听听你的想法。已经在根目录和更改路径中测试了表单。我收到同样的错误。 最后一次尝试是使用不同的方式创建表单。又什么都没有。

感谢您的宝贵时间, 谨致问候!

最佳答案

addUser(inputfirstname, inputlastname, inputEmail, inputPassword, confirmPassword) {
const uri = 'http://localhost:4200/signup';

uri属于服务器!我混淆了这个想法。需要是服务器 IP + 端口 + 来自服务器的调出路由器。

提交的内容是错误的。不得不重新研究http文档。

关于node.js - Angular 6 + NodeJS + MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51370644/

相关文章:

mongodb - 哪个库更高效“gopkg.in/mgo.v2”或“go.mongodb.org/mongo-driver/mongo”

mongodb - 匹配包含 $gte $lte 中所有数组元素的文档

node.js - 如何查询mongodb中所有没有特定id的文档?

javascript - 从 View 将 AngularJS 变量传递给 NodeJS 函数

node.js - "ConnectionError: Already connecting to database! Call close before connecting to different database"连接SQL服务器与nodejs

Angular CLI 自定义生成器

Angular Material float 标签不 float

ASP.NET Core 2.0 Razor 与 Angular/React/等

angularjs - 将 Firebase 数据库引用作为云函数中的数组返回

javascript - 将 requirejs 与 Node 一起使用