2015-09-13 22 views
-1

使用angular和mongo应用程序。 这是我api的一部分,在女巫我发布并提出请求。发布请求工作正常,但是当我把数据,我有一个错误“不能设置未定义的属性'typelocal'”。在邮递员PUT请求正常工作:使用angularjs更新mongo数据

var Flat = require('../models/flat.js'); 
     .put('/realestate/flats/edit/:id', function(req, res){ 
      Flat.findById(req.params.id, function(err, flat){ 
       if(err){ 
        res.send(err); 
       } 
       flat.typelocal = req.body.typelocal; 
       flat.save(function(err, flat){ 
        if(err){ 
         res.send(err); 
        } 
        res.json(flat); 
       }) 
      }) 
     }) 

     .post('/realestate/flats/add', function(req, res){ 
      var flat = new Flat({ 
        creator: req.decoded.id, 
        typelocal: req.body.typelocal, 
       }); 
      flat.save(function(err, newFlat){ 
        if(err){ 
         res.send(err); 
         return; 
        } 
        // io.emit('flat', newFlat); 
        res.json({message: "New Flat Created!"}); 
       }); 
     }) 
    return api; 
}; 

如果我改变我的PUT请求为:

.put('/realestate/flats/edit/:id', function(req, res){ 
    Flat.findById(req.params.id, function(err, flat){ 
     if(err){ 
     res.send(err); 
     } 
     res.json(flat); 
    }) 
}) 

我有一个对象,例如:

{ 
    "_id": "55f51361589d7ff015c899df", 
    "creator": "55ab2ee75d4c5c901f2517f9", 
    "typelocal": "rrrr", 
    "__v": 0, 
    "created": "2015-09-13T06:10:41.054Z" 
} 

这是我的HTML中,巫婆我有更新数据的输入:

<div ng-controller="EditFlatController as flat"> 
    <form class="form-control"> 
     <input type="text" class="form-control input-md" name="localtype" ng-model="flat.flatData.typelocal" placeholder="Typ lokalu" value="{{ flat.flat.typelocal }}"> 
     <button ng-click="flat.editFlatSave()" class="my-btn my-btn-danger rebtn-add-add">Send</button> 
    </form> 
</div> 

这是我的控制器的一部分:

.controller('EditFlatController', ['UpdateFlat', '$http', '$location', '$routeParams', function(UpdateFlat, $http, $location, $routeParams){ 
     vm = this; 
     $http.get('/api/realestate/flats/edit/' + $routeParams.id).success(function(data){ 
      vm.flat = data; 
     }) 
     vm.editFlatSave = function(){ 
      vm.message = ''; 
      UpdateFlat.update(vm.flatData) 
       .success(function(data){ 
        vm.flatData = ''; 
        vm.message = data.message; 
        $location.path('/realestate/flats'); 
       }) 
     } 
    }]) 

这是服务:

.factory('UpdateFlat', function($http){ 
     var flatFactory = {}; 
     flatFactory.update = function(flatData){ 
      return $http.put('/api/realestate/flats/edit/:id', flatData); 
     }; 
     return flatFactory; 
    }) 

回答

0

问题是在服务

.factory('UpdateFlat', function($http, $routeParams){ 
     var flatFactory = {}; 
     flatFactory.update = function(flatData){ 
      return $http.put('/api/realestate/flats/edit/' + $routeParams.id, flatData); 
     }; 
     return flatFactory; 
    })