2017-09-06 4 views
0

Wenn ich versuche, in die DB zu posten, wird Fehler angezeigt: 'Kann nicht POST/api/postCampaign' und POST http://127.0.0.1:50945/api/postCampaign 404 (nicht gefunden). Ich versuche, Daten in mongodb Datenbank zu speichern. Dieser Code verwendet, um zu arbeiten und der Mungo war Modulo Datenbank verbunden, aber nach einiger Zeit versuche ich, den Code zu wiederholen, aber der Modulo.io ist nicht mehr verfügbar, also änderte ich die Verbindung URI. Nicht sicher, ob es gibt alles, was ich bin fehltKnoten JS MongoDB POST Fehler

Meine 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); 
      }); 
    }; 
}]); 

Formularseite

<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> 

Antwort

3

Sie Versuche es um eine HTTP-Anfrage an die Datenbank zu stellen. Das ist nicht möglich. Sie sollten eine Anfrage an Ihren Node-Server stellen, der wiederum Daten an die DB schreiben soll.

Versuchen Sie, Ihre Anfrage zu diesem Endpunkt zu senden: http://localhost:3000/api/postCampaign

+0

Ich habe hinzugefügt, dass sowohl auf server.js Post und Winkel Post, aber es gibt: net :: ERR_CONNECTION_REFUSED und Fehler: null – billgajen

+0

Sorry, habe ich nicht verstehe, was du geändert hast. Ich denke, dass der Code aus Ihrer Frage funktioniert, wenn Sie nur Ihre API-URL von "http: //127.0.0.1: 50945" zu "http: // localhost: 3000" ändern. – poohitan

+0

Vielen Dank für Ihre Antwort @poohitan. Der von mir gesendete mongoose.connect-URI ist nur ein Beispiel. Wo ich gerade versuche, die Daten zu speichern, ist mongodb: // : @ 123456.mlab.com: 222288/x xxxxx. Muss ich die API-URL noch ändern? – billgajen