Ich habe 2 Server, 1 mit nodejs und einen anderen mit gulp-Webserver.node.js - Empfangen keine Daten mit Kreuzursprung
Der Server node.js verwendet eine Datei users.json und zeigt sie an.
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var router = express.Router();
var cors = require('cors')
var fs = require("fs");
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({"extended" : false}));
app.get('/listUsers', function (req, res) {
fs.readFile(__dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log(data);
res.end(data);
});
})
var server = app.listen(8081, function() {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
user.json:
{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
Jetzt möchte ich, dass die Daten nennen eine get-Methode verwendet, und speichern Sie es in eine Variable und dann ein primeng-Datentabelle mit angezeigt werden soll.
Deshalb habe ich eine data.service:
import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import { Data } from './data';
import 'rxjs/add/operator/toPromise';
@Injectable()
export class DataService {
constructor(private http : Http) {
}
getData(){
return this.http.get('http://localhost:8081/listUsers')
.toPromise()
.then(res => <Data[]> res.json().data)
.then(data => { return data; });
;}
}
ich dieses onInit In meinem datacomponent bin Aufruf:
import { Component } from '@angular/core';
import { Data } from './data';
import {DataTable} from 'primeng/primeng';
import {Column} from 'primeng/primeng';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { DataService } from './data.service'
@Component({
selector: 'my-datatbl',
templateUrl: 'dist/data.component.html',
directives: [DataTable, Column],
providers: [DataService]
})
export class DataComponent {
datatbl: Data[];
constructor(private dataservice : DataService) {
}
ngOnInit(){
this.dataservice.getData().then(datatbl => this.datatbl = datatbl)
console.log(this.datatbl)
consolelog zeigt nicht definiert.
Ich weiß nicht, was falsch ist, aber da ich ein absoluter Newbe bin, ist meine erste Frage: Ist das überhaupt möglich?
Dies ist nur für Testzwecke, wie ich in REST Apis bin. Ich möchte in diesem Stadium nicht mongodb oder irgendeinen anderen Datenbankservice verwenden, obwohl ich es tun könnte, wenn dies der einzige Weg wäre.