Não foi possível anexar um res.send (resultado) nos meus Nodejs para enviar dados para o aplicativo angular
Fiz um aplicativo Nodejs e angular2, onde eu preciso integrá-los ao aplicativo Neo4j. Consigo acessar o banco de dados do meu código NodeJS vindo do Angular2, mas não consigo enviar esses dados de volta ao aplicativo angular2. Se eu der
res.send(result)
qualquer lugar na minha função tmsServer, recebo erro ->
inside catch = Error: Can't set headers after they are sent.
Por favor ajude. Quero enviar meus dados de volta para o aplicativo angular.
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")
}
});
}
}