Я создал приложение nodejs, а также приложение Angular, которое мне нужно для получения данных из db, а также для хранения данных в db. У меня проблемы с подключением моего экспресс-сервера к приложению angular.

User.service.ts

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { User } from '../User';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { BASE_URL } from '../const/config';
import { MONGO_EXPRESS_URL } from '../const/config';

@Injectable({
  providedIn: 'root',
})
export class UserService {
  constructor(private http: HttpClient) {}

  getUsers(): Observable<User[]> {
    return this.http.get<User[]>(`${MONGO_EXPRESS_URL}/fetchdata`);
  }
}

Users.component.ts

import { Component, OnInit } from '@angular/core';
import { UserService } from 'src/app/services/user.service';
import { User } from '../../User';

@Component({
  selector: 'app-users',
  templateUrl: './users.component.html',
  styleUrls: ['./users.component.css'],
})
export class UsersComponent implements OnInit {
  users: User[] = [];

  constructor(private userService: UserService) {}

  ngOnInit(): void {
    this.userService.getUsers().subscribe((users) => (this.users = users));
  }
}

эта ошибка появляется, когда я запускаю приложение angular

Server.js

app.use("/", router);

app.listen(port, function () {
  console.log("Server is running on Port: " + port);
});

router.route("/fetchdata").get(function (req, res) {
  users.find({}, function (err, result) {
    if (err) {
      res.send(err);
    } else {
      res.send(result);
    }
  });
});
0
Pankaja Chalaru 10 Сен 2021 в 10:58

2 ответа

Лучший ответ

Вы можете поделиться, где вы настроили route / fetchdata на своем экспресс-сервере?

Это должно выглядеть примерно так на вашем nodeJS, вы должны настроить экспресс так

constructor() {
  this.app = express()
}

Initialize{
    this.app.use((req, res, next) => {
      res.header('Access-Control-Allow-Origin', '*');
      res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
      res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, POST, PUT');
      if('OPTIONS' === req.method){
        res.sendStatus(200);
      }
      else {
          next();
      }
    })

  this.app.use(RouterWebservices)

    this.app.listen(your.HttpPort, your.Ip, () => {
      console.log('Server now listening at ', your.HttpPort, 'IP ', your.Ip);
    })
}

Тогда вам нужно объявить свои переменные в router.webservice.ts

export const RouterWebservices = express.Router()

RouterWebservices.get('/fetchdata', FetchWebservice)

И напишите FetchWebserivce, где вы просто отвечаете на запрос данными

0
Lucas.Feichtinger 10 Сен 2021 в 11:33

Проблема в маршруте: https: // localhost: 4000. Это будет http: // localhost: 4000 (http: // установлено http s : //)

0
Guiditox 12 Сен 2021 в 04:19