stackoverflow.com/questions/52681565/...

дал приложение Nodejs и angular2, где мне нужно интегрировать их в приложение Neo4j. Я могу получить доступ к базе данных из моего кода NodeJS, поступающего из Angular2, но затем я не могу отправить эти данные обратно в приложение angular2. Если я дам

 res.send(result) 

где-нибудь в моей функции tmsServer, я получаю ошибку ->

 inside catch = Error: Can't set headers after they are sent.

Пожалуйста помоги. Я хочу отправить свои данные обратно в угловое приложение.

tmservercontroller.js

   // Require Neo4j
   var neo4j = require('neo4j-driver').v1;

  var path = require('path');
  var logger = require('morgan');
  var bodyParser = require('body-parser');
  var express = require('express');

  var router = express.Router();

   var app = express();


  // Create Driver
   const driver = new neo4j.driver("bolt://localhost:11001", 
   neo4j.auth.basic("neo4j", "Virtuallib1"));



 // //View Engine

   app.set('views', path.join(__dirname, 'views'));

   app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(express.static(path.join(__dirname, 'public')));



  var session = driver.session();
  var request = require('request');

   var finalResult ;

   router.post('/', tmsServer);
   module.exports = router;


   function tmsServer(req, res) { 

    session
       .run('MATCH (n) RETURN n LIMIT 5')

       .then(function (result){

           result.records.forEach(function(record){
               console.log("record = ", record);
               console.log("result = ", result)
               console.log("1] 
   record._fields[0].properties=",record._fields[0].properties);


                    res.send(result); 
           });


       })


       .catch(function(err){
        console.log("inside catch = "+err);
    })

    res.send('It Works');
    session.close();
   }

Neo4j-primary.component.ts

   import { Component, OnInit } from '@angular/core';
   import { Injectable } from '@angular/core';

 import { ToasterService } from '../toaster.service';

  import { FormGroup, FormControl, FormBuilder, Validators } from 
 '@angular/forms';
   import { Http, Response, Headers } from '@angular/http';
  import { config } from '../config';
  import { Subject } from 'rxjs';

  import 'rxjs/add/operator/map';
  import { map } from 'rxjs/operators';
  import 'rxjs/Rx';
  import { Observable } from 'rxjs';

  // Statics
  import 'rxjs/add/observable/throw';


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

 export class Neo4jPrimaryComponent implements OnInit {

 constructor(private http: Http,  private notify: ToasterService) { }

 ngOnInit() {
this.viewNodesStart();
    }


  emptyObj1;
   emptyObj;
   info;

   // -------------------------------  Nodes Entire Data -------------

  viewNodesStart() {

console.log("INSIDE viewNodesStart()")

// Nodes Value

   console.log("inside Nodes Value");
  var data = localStorage.getItem('token');

 console.log("data is=>",data+ "emptyobj1 = "+ this.emptyObj1);

   var url = config.url;
   var port = config.port;

   var object = {
    "emptyObj" : this.emptyObj
    }
    this.http.post("http://" + url+":" + port + 
    "/viewNodesStart",this.emptyObj1)
  .map(Response => Response)
  .subscribe((res: Response) => {

    console.log("XXXXXXXXXXXX Response on /viewNodesStart", res);

    this.info = res;   

    if (this.info.statusCode == 200) {
      console.log("Data added successfully");

    } else {
      console.log("Data is not inserted")

     }
     });

   }

   }

Ответы на вопрос(1)

Ваш ответ на вопрос