我在实现客户端更新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>
您实际上没有在您给出的示例中放入数据。
$http.put('/api/hc/' + id)
应该$http.put('/api/hc/' + id, formData)
,其中formData
是从要发送到管道的表单字段中收集的任何对象。另外,看看angular的$[resource][1]
服务,比起直接使用$http
,它是一种更简洁的REST客户端方式。