0

我对MEAN堆栈相当陌生,在学习本教程之后:http://www.bradoncode.com/tutorials/mean-stack-tutorial-part-4-angularjs/,我试图制作自己的Web应用程序来发送和接收发票。我有一个localhost:3000/invoices页面,它目前是空的([])。我正在尝试填写表单并发布到localhost:3000/invoices,以便填充MongoDB数据库。我的MongoDB进程正在不断运行。这是模型概述我需要在记录的所有字段:MEAN:在开机自检后出现错误400(错误的请求)

'use strict'; 

/** 
* Module dependencies. 
*/ 
var mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    validation = require('./validation.server.model'); 

/** 
* Invoices Schema 
*/ 
var InvoiceSchema = new Schema({ 
    invoice_date: { 
     type: Date, 
     default: Date.now 
    }, 
    from_entity: { 
     type: String, 
     default: '', 
     trim: true, 
     required: 'legal entity cannot be blank' 
    }, 
    from_service: { 
     type: String, 
     default: '', 
     trim: true,  
     required: 'service line cannot be blank' 
    }, 

    country: { 
     type: String, 
     default: '', 
     trim: true, 
     required: 'country cannot be blank' 
    }, 

    to_entity: { 
     type: String, 
     default: '', 
     trim: true, 
     required: 'legal entity cannot be blank' 
    }, 

    to_service: { 
     type: String, 
     default: '', 
     trim: true,  
     required: 'service line cannot be blank' 

    }, 

    partner: { 
     type: String, 
     default: '', 
     trim: true,  
     required: 'partner cannot be blank' 
    }, 

    invoice_number: { 
     type: String, 
     default: '', 
     trim: true,  
     unique: true, 
     required: 'invoice number cannot be blank' 
    }, 

    currency: { 
     type: String, 
     default: '', 
     trim: true, 
     required: 'currency cannot be blank' 
    }, 


    amount: { 
     type: Number, 
     default: '', 
     trim: true, 
     required: 'amount cannot be blank' 

    } 

}); 

mongoose.model('Invoice', InvoiceSchema); 

这是我的发票客户端控制器:

'use strict'; 

// Invoices controller 
angular.module('invoices').controller('InvoicesController', ['$scope', '$stateParams', '$location', 'Authentication', 'Invoices', '$filter', 
    function($scope, $stateParams, $location, Authentication, Invoices, $filter) { 
     $scope.authentication = Authentication; 
     $scope.currentPage = 1; 
     $scope.pageSize = 10; 
     $scope.offset = 0; 

     // Page changed handler 
     $scope.pageChanged = function() { 
      $scope.offset = ($scope.currentPage - 1) * $scope.pageSize; 
     }; 

     // Create new Invoice 
     $scope.create = function() { 
      var invoice = new Invoices ({ 
        amount: this.amount, 
        invoice_number: this.invoice_number, 
        partner: this.partner, 
        to_service: this.to_service, 
        to_entity: this.to_entity, 
        country: this.country, 
        from_service: this.from_service, 
        from_entity: this.from_entity 
      }); 

      // Redirect after save 
      invoice.$save(function(response) { 
       $location.path('invoices/' + response._id); 

       // Clear form fields 
       $scope.name = ''; 
      }, function(errorResponse) { 
       $scope.error = errorResponse.data.message; 
      }); 
     }; 

     // Remove existing Invoice 
     $scope.remove = function(invoice) { 
      if (invoice) { 
       invoice.$remove(); 

       for (var i in $scope.invoices) { 
        if ($scope.invoices [i] === invoice) { 
         $scope.invoices.splice(i, 1); 
        } 
       } 
      } else { 
       $scope.invoice.$remove(function() { 
        $location.path('invoices'); 
       }); 
      } 
     }; 

     // Update existing Invoice 
     $scope.update = function() { 
      var invoice = $scope.invoice; 

      invoice.$update(function() { 
       $location.path('invoices/' + invoice._id); 
      }, function(errorResponse) { 
       $scope.error = errorResponse.data.message; 
      }); 
     }; 


     // Find a list of Invoices 
     $scope.find = function() { 
       $scope.invoices = Invoices.query(); 
     }; 

     // Find existing Invoice 
     $scope.findOne = function() { 
      $scope.invoice = Invoices.get({ 
       invoiceId: $stateParams.invoiceId 
      }); 
     }; 


     // Search for a Invoice 
     $scope.invoiceSearch = function(invoice) { 
      $location.path('invoices/' + invoice._id); 
     }; 
    } 
]); 

而且这是在前端AngularJS一个简单的表格:

<section data-ng-controller="InvoicesController"> 
    <div class="page-header"> 
     <h1>New Invoice</h1> 
    </div> 
    <div class="col-md-12"> 
     <form class="form-horizontal" data-ng-submit="create()" novalidate> 
      <fieldset> 
       <div class="form-group"> 
        <label class="control-label" for="invoice_number">Invoice Number</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.invoice_number" id="invoice_number" class="form-control" placeholder="Invoice Number" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="amount">Amount</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.amount" id="amount" class="form-control" placeholder="Amount" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="currency">Currency</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.currency" id="currency" class="form-control" placeholder="Currency" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="partner">Partner</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.partner" id="partner" class="form-control" placeholder="Partner" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="country">Country</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.country" id="name" class="form-control" placeholder="Country" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="to_service">Service Line (To:)</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.to_service" id="to_service" class="form-control" placeholder="Service Line (To:)" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="from_service">Service Line (From:)</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.from_service" id="from_service" class="form-control" placeholder="Service Line (From:)" required> 
        </div> 
       </div> 
       <div class="form-group"> 
        <label class="control-label" for="to_entity">Entity(To:)</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.to_entity" id="to_entity" class="form-control" placeholder=" Entity (To:)" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <label class="control-label" for="from_entity">Entity(From:)</label> 
        <div class="controls"> 
         <input type="text" data-ng-model="invoice.from_entity" id="from_entity" class="form-control" placeholder=" Entity (From:)" required> 
        </div> 
       </div> 

       <div class="form-group"> 
        <input type="submit" class="btn btn-default"> 
       </div> 
       <div data-ng-show="error" class="text-danger"> 
        <strong data-ng-bind="error"></strong> 
       </div> 
      </fieldset> 
     </form> 
    </div> 
</section> 

当我开始并提交表单我得到如下:

enter image description here

金额是通过模型显而易见的必填字段,我总是肯定会填写该值。我总是输入数字和小数,但是表示该字段是必需的,并显示错误的请求。此外,每当我做npm开始,我的应用程序加载没有任何错误。我曾试图观看过几个YouTube教程,但没有一个澄清了这个不起作用的原因。 Swift帮助将不胜感激:)

编辑:当我从模型中删除所需的,交易通过,但没有输入到表格中的值都记录下来,只有发票日期是。

回答

1

你得到一个日期,因为有一个默认的设置。在您的控制器中定义$scope.invoice = {},以便它绑定到您的视图(双向)。然后,从$ scope.invoice中更改所有提取。例如:

$scope.invoice = {}; 
    $scope.create = function() { 
     var invoice = new Invoices ({ 
       amount: $scope.invoice.amount, 
       invoice_number: $scope.invoice.invoice_number, 
       partner: $scope.invoice.partner, 
       ... 
     }); 
     ... 
    }; 
+0

我通过删除发票得到它的工作。在“data-ng-model =”invoice.currency“”中。你的方法更好吗? – Shashank