2017-05-22 3 views
0

Fehlernbekam einen seltsamen Validierungsfehler mit Mungo

Hallo Leute, ich bin mit Mungo mit einem seltsamen Fehler gegenüber. Ich versuche eine Post-Anfrage zu machen, ein Produkt mit eckigen js hinzuzufügen, aber ich bekomme einen Fehler 404. In meiner Google Chrome-Konsole, sagte der Fehler, dass:

{"data": 
{"errors":{"picture": 
{"message":"Path `picture` is required.", 
"name":"ValidatorError","properties": 
{"type":"required","message":"Path `{PATH}` is 
required.","path":"picture"},"kind":"required","path":"picture"}, 
"name":{"message":"Path `name` is 
required.","name":"ValidatorError","properties": 
{"type":"required","message":"Path `{PATH}` is  
required.","path":"name"},"kind":"required","path":"name"}}, 
"message":"Product validation 
failed","name":"ValidationError"} 

Wenn ich die Post-Anforderung funktioniert gut Postbote Client mit bin. Aber nicht mit eckigen js. Also ich möchte wissen, wie ich dieses Problem beheben kann. Ich brauche wirklich

Hier kann Ihnen helfen, mein Produkt Modell Skript

var mongoose = require('mongoose'); 
var productSchema = new mongoose.Schema({ 
name: {type: String, required: true}, 
category: {type: String, default: ''}, 
price: { type: Number, default: 0}, 
    picture: { type: mongoose.Schema.Types.Mixed, required: true}, 
    morePictures: [mongoose.Schema.Types.Mixed], 
    quantity: {type: Number, default: 0}, 
    status: { 
    type: String, 
    enum: ['Pending', 'In Progress', 'Cancelled', 'Done'], 
    default: 'Pending' 
    }, 
    date: { type: Date, default: Date.now}, 
    description: { type: String}, 
    owner: {type: String} 
    }); 

var Product = mongoose.model('Product', productSchema); 

module.exports = Product; 

Mein Produkt-Controller finden, wo ich meine Aktionen definieren, Routen diferent.

module.exports.createProduct = function (req, res){ 
    var product = new Product(req.body); 
    console.log(req.body); 
    product.save(function (err, newProduct){ 
    if(err){ 
     return sendJsonResponse(res, 404, err); 
    } 
    else 
     return sendJsonResponse(res, 201, newProduct); 
}) 
} 

`` `` und in meinem Winkel js Skript, wo ich

meine addProduct Methode definieren
app.controller('ProductController', ['$scope','$http','filepickerService', 
function ($scope, $http, filepickerService){ 
    console.log('Welcome to the ProductController'); 

    *** some code here *** 
    $scope.addProduct = function(){ 

     var newProduct = { 
      name: $scope.product.name, 
      category: $scope.product.category, 
      price: $scope.product.price, 
      picture: $scope.product.picture, 
      morePictures: [], 
      quantity: 10, 
      status: "Pending", 
      date: Date.now(), 
      description: $scope.product.description, 
      owner: "Joel Alexandre Khang Zulbal" 
     }; 

     console.log(newProduct); 
     alert("Passing variable..."); 

     $http({ 
       url: '/api/products', 
       method: 'POST', 
       headers: { 
         'Content-Type': 'application/x-www-form-urlencoded' 
        }, 
       data: newProduct 
      }) 
      .then(function onSuccessCallback (products){ 
        $scope.products.push(products); 
         alert("Success Insertion"); 
       }, function onErrorCallback (error){ 
         console.log(error); 
         alert("Insertion failed!!"); 
       }); 

      $scope.product = {}; 
      $scope.close(); 
    } 
     *** some other code here *** 
}]); 

Ich weiß nicht, wie das zu beheben, wird jede Hilfe verry gratefull sein.

node version: 6.9.4 
mongodb version: 3.4.4 
mongoose version: 4.8.1 
OS: Windows 10 

Hier ist der Fehler, den ich bekommen, wenn Winkel js mit Mongoose error validation

Hier mein NEWPRODUCT Objekt, wenn ich eine Post-Anforderung mit AngularJS

Mongoose error angular js machen bin

Antwort

0

Bitte lesen Sie Ihre Fehlerprotokoll sorgfältig. Es zeigt, dass Sie keinen Wert für picture und name festgelegt haben.

Beide sind erforderlich. Bitte geben Sie sie in Ihre POST-Anfrage ein oder entfernen Sie required, falls dies nicht notwendig ist.

+0

Also das ist das Problem, wenn ich Postman benutze ich einen Wert für beide festlegen. Das gleiche in angularjs, aber es funktioniert nicht. Wenn ich für Bild und Name erforderlich bin, wenn ich eine Post-Anfrage mit angularjs mache, die Post Anfrage erfolgreich, aber ein leeres Objekt wird stattdessen gespeichert, auch wenn ich den gesamten Wert, wenn Sie diese Anfrage setzen ... –

+0

Könnten Sie mir eine senden Screenshot von Postman? Ich glaube nicht, dass es das Postman-Problem ist. –

+0

Mit Postboten Ich habe kein Problem, alles funktioniert wie freigestellt, aber nicht mit angularjs –

Verwandte Themen