2017-10-19 8 views
0

HTTP POST n'obtenant aucune réponse. Je ne vois aucune réponse dans l'outil de développement. Quel est le problème dans le code. S'il vous plaît aider. Comment obtenir la réponse de l'API et ajouter le nouvel enregistrement à la liste.Node.js Restfull API utilisant SQLlite ne fonctionne pas avec Angular 2 HTTP post

fort texte // MY API REST CODE: // Mettez ces déclarations avant de définir les routes.

var express = require('express'); 
var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database('app_data/SocBillSys.db'); 
var bodyParser = require('body-parser'); 

var app=express(); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 
app.use(allowCrossDomain); 

// Ceci autorise tout serveur d'API d'accès au domaine.

function allowCrossDomain(req, res, next){ 
     res.setHeader('Access-Control-Allow-Origin', '*'); 
     res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, 
    PUT, PATCH, DELETE'); // If needed 
     res.setHeader('Access-Control-Allow-Headers', 'X-Requested-  With,contenttype'); // If needed 
     res.setHeader('Access-Control-Allow-Credentials', true); // If needed 
     next(); 
} 

// INSERT RECORD

app.post('/db/society', function(req,res) 
{ 

    db.run("INSERT INTO society (name, type, address, city, state, pincode) VALUES (?,?,?,?,?,?)", 
     [ req.body.name, 
     req.body.type, 
     req.body.address, 
     req.body.city, 
     req.body.state, 
     req.body.pincode ] 
    , 
    function(error,response) 
    { 
     if (error == null) 
      res.status(202).json({"id": this.lastID}); 

     else 
     res.status(500).send(error.message); 
    }); 

}); 

app.listen(3000, function() { 
    console.log('NODE.JS WEB API SERVER is listening at port 3000...'); 
}); 

HTTP SERVICE ANGULAIRE CALL

import { Injectable } from '@angular/core'; 
import { Http, Response, Headers, RequestOptions } from '@angular/http'; 
import { ISociety } from '../Society/Society'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 

@Injectable() 
export class SocietyService { 

    constructor(private _http: Http){} 

createSociety(society: ISociety): void{ 
     let headers = new Headers({'Content-Type': 'application/json' }); 
     let options = new RequestOptions({headers: headers}); 
     this._http.post('http://localhost:3000/db/society', JSON.stringify(society), options) 
      .map(this.handleResponse) 
      .catch(this.handleError);   
    } 



private handleResponse(res: Response) { 
     let body = res.json();  
     return body; 
     } 

    private handleError (error: Response | any) { 
     console.error(error.message || error); 
     return Observable.throw(error.message || error); 
     } 


} 

Répondre

1
function allowCrossDomain(req, res, next){ 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, 
PUT, PATCH, DELETE'); // If needed 
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type'); // If needed 
    res.setHeader('Access-Control-Allow-Credentials', true); // If needed 
    next(); 

}

+0

Je ne vois pas de différence entre votre code et mon code autre que 'X-Requested-With, Content-Type' mais ce n'est pas un problème. C'était juste mon problème de copier-coller. –

+0

Merci Ayush pour votre solution. Je ne pouvais d'abord pas comprendre ce que vous avez corrigé, mais plus tard, je l'ai eu. J'apprécie ton aide –