Запрос на получение не выполняет Angular-Express

Я новичок в стеке MEAN.Я хочу получать данные с экспресс-сервера (который я создал с помощью mongodb), когда я нажимаю кнопку, функция при нажатии кнопки была выполнена, но запрос не был выполнен, база данных, сервер все работают нормально, я просто ничего не получил на консоли, вот мои файлы клиента и сервера:

  • клиент (работает на http://localhost:3001)

  • Импортированные модули и добавленные к импорту в ngModule

импортировать {Http, Headers, HttpModule, Response, RequestOptions} из "@ angular / http";

Введен в конструктор как сервис, затем: template:

<button md-button class="button1" (click)="newQues()">Submit</button>

В классе:

newQues(){

  this.http.get('https://localhost:3000/')
                .map(this.extractData)
                .catch(this.handleError);  //these copied from angular2
                                           //official documentation          
}

private extractData(res: Response) {
let body = res.json();
console.log(body);  //not getting console nor error
return body.data || { };
}

сервер работает на порту 3000

app.get('/', function (req, res) {

   model.findOne({ id: 1}, function (err, data) {
   if (err) {
   console.log(err)
   } else {
   console.log(data);
   res.send(data);
}
})

введите здесь описание изображения
получение этой ошибки при запросе

весь код сервера:

import * as express from "express";
var app = express();
import * as path from "path";
import * as mongoose from "mongoose";
import * as lodash from "lodash";
import * as morgan from "morgan";


app.use(express.static(path.join(__dirname, "./../client")));

var uriString = 'mongodb://localhost/quizapp';
mongoose.connect(uriString, function (err, res) {
if (err) {
console.log("Error occured while establishing connection " + err);
} else {
console.log("Connection successful ");
}
})

var schema = new mongoose.Schema({     //schema
question: String,
id: Number
})

var quizz = mongoose.model('Quiz', schema);  //creating model

var firstDoc = new quizz({
question: 'question 1',
id: 1
})
var secondDoc = new quizz({
question: 'question 2',
id: 2
})

var question_data = [firstDoc, secondDoc];

quizz.insertMany(question_data, function (err, res) {
if (err) {
console.log("Error occured while saving document object " + err)
} else {
console.log("Data Saved Successful");
}
})

app.get('/data', function(req, res) {
quizz.findOne({ id: 1}, function (err, data) {
 if (err) {
   console.log(err)
 } else {
   console.log(data);
   res.send(data);   //res.json
 }
 })
 })

когда я направляюсь на localhost: 3000 / data данные из базы данных отображаются в окне, но при запросе этого маршрута у клиента (см. код на стороне клиента this.http.get) возникает ошибка (изображение прилагается)


person john doe    schedule 13.12.2016    source источник


Ответы (1)


для извлечения данных вы должны подписаться на него. попробуй так

export class SimpleHTTPComponent {
      data: Object;
      loading: boolean;

      constructor(public http: Http) {
      }

      makeRequest(): void {
        this.loading = true;
        this.http.request('http://jsonplaceholder.typicode.com/posts/1')
          .subscribe((res: Response) => {
            this.data = res.json();
            this.loading = false;
          });
      }
    }

и я думаю, что вы не используете this с body. ваш console.log должен быть таким. console.log(this.body);

person Amit kumar    schedule 13.12.2016
comment
Я подписался, но ничего не случилось, я думаю, что маршрут не запущен на сервере, или URL-адрес неверен в запросе на получение - person john doe; 13.12.2016
comment
установите morgan и я думаю вместо res.send (data); вы должны попробовать res.json (data); - person Amit kumar; 13.12.2016
comment
Я ничего не делал, также пробовал использовать morgan, ничего не получилось, отметив зарегистрированный - person john doe; 13.12.2016
comment
сделайте одно дело ... используйте почтальона и посмотрите, даст ли вам какой-либо результат или нет. если вы не получаете там вывода, это означает, что вы делаете что-то не так в коде вашего сервера. - person Amit kumar; 13.12.2016
comment
Клиентская сторона запрашивает штраф, я пробовал использовать jsonplaceholder, он возвращает данные, это означает, что клиент запрашивает правильно, я думаю, что есть проблема с URL-адресом и, проложите маршрут на сервере, см. Изображение, которое я прикрепляю - person john doe; 14.12.2016
comment
попробовал почтальон, понял: Это похоже на ошибку при подключении к localhost: 3000. Статус ответа был 0. - person john doe; 14.12.2016
comment
Я думаю, что вы делаете ошибку в своем файле маршрутизации сервера. попробуйте с помощью простого app.get ('/', function (req, res) {res.send ('im the home page!');}); проверьте файл вашей модели. мы не знаем, что вы там написали. - person Amit kumar; 14.12.2016
comment
Обязательно ли включать заголовки при запросе с использованием метода get? - person john doe; 14.12.2016
comment
в соответствии с вашим серверным кодом, я не думаю, что вам нужен токен доступа или какая-либо авторизация в заголовке. - person Amit kumar; 14.12.2016
comment
покажите код вашего сервера, и я хочу знать, когда вы запрашиваете какой-либо другой API на этом порту № 3000, работает он или нет. - person Shekhar Tyagi; 14.12.2016