【问题标题】:Node JS MongoDB POST Error节点 JS MongoDB POST 错误
【发布时间】:2017-09-07 00:01:48
【问题描述】:

当我尝试发布到数据库时,它显示错误:'Cannot POST /api/postCampaign' 和 POST http://127.0.0.1:50945/api/postCampaign 404 (Not Found)。我正在尝试将数据存储在 mongodb 数据库中。这段代码曾经可以工作,mongoose 是连接模数数据库,但一段时间后我试图重做代码,但模数.io 不再可用,所以我更改了连接 U​​RI。不知道我是否还有其他遗漏

查看我的代码

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

表单页面

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

【问题讨论】:

    标签: angularjs node.js express mean-stack mongoose-schema


    【解决方案1】:

    您正在尝试向数据库发出 HTTP 请求。这甚至是不可能的。您应该向您的 Node 服务器发出请求,然后该服务器应将数据写入 DB。

    尝试将您的请求发送到此端点:http://localhost:3000/api/postCampaign

    【讨论】:

    • 我已将其添加到 server.js 帖子和 Angular 帖子中,但它返回:net::ERR_CONNECTION_REFUSED 和错误:null
    • 对不起,我不明白你做了什么改变。我认为如果您仅将 API url 从 http://127.0.0.1:50945 更改为 http://localhost:3000,您问题中的代码将起作用
    • 感谢您的回复@poohitan。我发送的 mongoose.connect URI 只是一个示例。我实际尝试存储数据的位置是 mongodb://:@123456.mlab.com:222288/x‌​xxxxx。我还需要更改 API 网址吗?
    • 抱歉我已经解决了这个问题。刚刚意识到我没有运行服务器。但是你的回答让我明白了,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2014-08-30
    • 2018-06-15
    • 2020-07-23
    • 2014-10-05
    • 2017-11-21
    • 2019-06-19
    相关资源
    最近更新 更多