2016-05-05 14 views
0

Fabrik:Winkel Versprechen response.data ist leer

angular.module('clientApp').factory('Di', function($http) { 
    return { 
    create: function(dis){ 
     return $http.post('/dis', dis); 
    } 
}); 

Controller:

'use strict'; 

angular.module('clientApp').controller('AdminCtrl', function($scope, toastr, Di) { 
    $scope.di = {}; 
    $scope.dis = []; 

    $scope.add = function(){ 
     Di.create($scope.di).then(function(response){ 
     console.log(response, 'front data post') 
     $scope.dis.push(response.data); 
     $scope.di= {}; 
     }); 
    }; 
    }); 

Als ich console.log() die Antwort, das einzige, was ich in response.data sehen, ist die HashKey . Ich sehe das Objekt in response.config.data, aber von dem, was ich online gesehen habe, ist dies nur das ursprüngliche Objekt, das ich an die Datenbank sende, nicht das zurückgegebene Versprechen, richtig?

Die Daten werden in der Datenbank gespeichert.

Was mache ich falsch? Ich habe eine ähnliche Konfiguration erfolgreich mit anderen Versprechen gemacht, aber die Antwort ist nicht, was ich hier erwarte.

API

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var DiSchema = new mongoose.Schema({ 
    name: { type: String, lowercase: true , required: true }, 
    photo: { type: String }, 
    email: { type: String, unique: true, lowercase: true }, 
    year: { type: Number}, 
    timestamp: { type : Date, default: Date.now }, 
    description: { type: String}, 
    location: { type: Array }, 
    social: { 
    website: {type: String}, 
    facebook: {type: String }, 
    twitter: {type: String }, 
    instagram: {type: String } 
    } 
}); 

DiSchema.methods.create = function(o, cb){ 
    this.model.save(o, cb); 
}; 

module.exports = mongoose.model('Di', DiSchema); 

Controller:

'use strict'; 

var Di = require('../models/di'); 

exports.create = function(req, res){ 
    Di.create(req.body , user, function(err, di){ 
    console.log('req.body.di', req.body); 
    res.send({di:di}); 
    }); 
}; 

Routen:

var dis = require('../contollers/dis'); 
app.post('/dis', dis.create); 
+2

Sie haben einen Tippfehler, der das Problem sein kann. Ihre "create" -Methode für den Dienst sollte den Parameter "dis" anstelle von "di" haben. Du gibst "dis" an den Post weiter, der nicht definiert ist. – DerekMT12

+0

Entschuldigung, das ist der 'Post' oder' Get'? – ste2425

+1

Es ist die create 'Funktion (di) {}' – Dan

Antwort

2

Sie hatten einen Tippfehler mit einem zusätzlichen Parameter innerhalb Ihrer create-Funktion.

exports.create = function(req, res){ 
    Di.create(req.body , function(err, di){ 
    console.log('req.body.di', req.body); 
    res.send({di:di}); 
    }); 
}; 
0

Ich glaube, Sie Ihr Versprechen an den Umfang binden sollte. Würde das das Problem beheben? Kannst du es versuchen?

Verwandte Themen