平均堆栈客户端更新

时间:2014-08-06 03:36:44

标签: node.js angularjs express mean-stack

我在实现客户端更新CRUD逻辑时遇到问题。这些字段当前正在按设置删除。我错过了什么?

我的角度:

$scope.editService = function(id) {
        $http.put('/api/hc/' + id, 
                  {title: 'new',
                   shortname: 'new',
                  summary: 'new',
                  description: 'new'}
                  )
           .success(function(data) {

        })
        .error(function(data) {
            console.log('Error: ' + data);
        });
}; 

我的表达:似乎没有传递JSON值,由于某种原因,所有字段和键都被擦除干净,只留下_id和_v键和值。

.put(function(req, res) {
    Service.findById(req.params._id, function(err, service) {
        if (err)
            res.send(err);
        service.title = req.body.title;     // update the items info
        service.summary = req.body.summary;
        service.shortname = req.body.shortname;
        service.description = req.body.description;
        // save the items
        service.save(function(err) {
            if (err)
                res.send(err);
            res.json({ message: 'Service updated!' });
        });
    });
})

我的观点

 <form name="editForm" ng-submit="editService(service._id)" ng-repeat="service in services 
 filter:json">
  <input type="text" placeholder="{{ service.title}}" ng-model="serviceTitle" required>
  <input type="text" placeholder="{{ service.shortname}}" ng-model="serviceShortname" required>
  <input type="text" placeholder="{{ service.description}}" ng-model="serviceSummary" required>
  <textarea type="text" placeholder="{{ service.summary}}" ng-model="serviceDescription" required></textarea>
  <button type="submit">Edit</button>
  </form>

1 个答案:

答案 0 :(得分:1)

您实际上并未将数据放在您提供的示例中。

$http.put('/api/hc/' + id)

应该是

$http.put('/api/hc/' + id, formData)

其中formData是您从要发送管道的表单字段中收集的任何对象。另外,对于角度$[resource][1]服务有一个雄浑之道,与直接使用$http相比,它是一种更干净(imo)的REST客户端方式。