2017-09-06 6 views
0

Lorsque j'essaie de publier sur la base de données, l'erreur suivante s'affiche: 'POST/api/postCampaign' et POST http://127.0.0.1:50945/api/postCampaign 404 (non trouvé). J'essaye de stocker des données dans la base de données de mongodb. Ce code a l'habitude de fonctionner et le mongoose a été connecté à la base de données de module mais après quelque temps j'essaye de refaire le code mais le modulus.io n'est plus disponible, ainsi j'ai changé l'URI de connexion. Je ne sais pas s'il y a autre chose que je suis absentNoeud JS MongoDB POST Erreur

Voir mes codes

server.js

var express = require('express'); 
var app = express(); 
var mongoose = require('mongoose'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 
var port = process.env.PORT || 3000; 

//Database connection 
mongoose.connect('mongodb://localhost/myappdatabase'); 

app.use(express.static(__dirname + '/public')); 
app.use(express.static(__dirname + '/dist')); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(bodyParser.json()); 
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(morgan('dev')); 

//Database Schema/Model 
var Schema = mongoose.Schema; 

var campaignSchema = new Schema({ 
    goalAmount: String, 
    campaignTitle: String 
}); 

var Campaign = mongoose.model('Campaign', campaignSchema); 

//Routes 
app.get('/startCampaign', function(req, res){ 
     res.sendfile('./public/views/start-campaign.html'); 
}); 

app.post('/api/postCampaign', function(req, res) { 

    Campaign.create({ 
     goalAmount : req.body.goalAmount, 
     campaignTitle: req.body.campaignTitle, 
     done : false 

    }); 
}); 


app.listen(port); 
console.log('App listening on port' + port); 

MainController.js

appTitan.controller('mainController', ['$scope', '$http', function($scope, $http){ 
    // Signup form 
    $scope.form = 'signup'; 

    $scope.switchForm = function(newForm){ 
     $scope.form = newForm; 

    }; 

    // Start camapaign 
    $scope.startCampaignData = {}; 
    $scope.createCampaign = function(){ 
     $http.post('/api/postCampaign', $scope.startCampaignData) 
      .success(function(data) { 
       console.log(data); 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }); 
    }; 
}]); 

forme Page

<form action=""> 
    <div class="form-group"> 
     <label for="goal_amount">How much money would you like to raise?</label> 
     <input type="text" name="goal_amount" id="goal_amount" ng-model="startCampaignData.goalAmount"> 
     <select name="goal_amount" id="goal_amount"> 
      <option value="GBP">GBP</option> 
      <option value="USD">USD</option> 
     </select> 
    </div> 
    <div class="form-group"> 
     <label for="campaign_title">What's the tile of your campaign?</label> 
     <input type="text" name="campaign_title" id="campaign_title" ng-model="startCampaignData.campaignTitle"> 
    </div> 
    <div class="form-group"> 
    <label for="goal_amount">Choose a category</label> 
     <select name="campaign_category" id="campaign_category"> 
      <option value="">Choose a category</option> 
      <option value="USD">USD</option> 
     </select> 
    </div> 
    <div class="form-group"> 
     <button ui-sref="form.stepTwo">CREATE</button> 
     <button type="submit" ng-click="createCampaign()">Submit Test</button> 
    </div> 
</form> 

Répondre

3

Vous essayez ing pour faire une requête HTTP à la base de données. Ce n'est même pas possible. Vous devriez faire une demande à votre serveur de noeud qui à son tour devrait écrire des données à DB.

Essayez d'envoyer votre demande à ce critère d'évaluation: http://localhost:3000/api/postCampaign

+0

J'ai ajouté que à la fois post et post server.js angulaire mais il retourne: net :: ERR_CONNECTION_REFUSED et erreur: null – billgajen

+0

Désolé, je ne l'ai pas Comprenez ce que vous avez changé. Je pense que le code de votre question fonctionnera si vous changez seulement votre URL d'API de 'http: //127.0.0.1: 50945' à' http: // localhost: 3000' – poohitan

+0

Merci pour votre réponse @poohitan. L'URI mongoose.connect que j'ai envoyé est juste un échantillon. Où je suis en train d'essayer de stocker les données est mongodb: // : @ 123456.mlab.com: 222288/x xxxxx. Dois-je encore changer l'URL de l'API? – billgajen