我使用nodejs,mongoose和angular来实现具有平均堆栈的RestAPI,我试图在我的数据库中更新提供者记录。在这里你可以找到我在put方法中的内容: 我有我的架构描述here 这就是我在控制台中获得的内容。
Object {_id:“553d27a24c47696420c6ee39”,name:“nn”,url:undefined,__ v:0,posts:Array [0] ...}
如果您通过邮递员输入数据,此API可以正常工作。
/*update the provider by id in REST API*/
router.put('/providers/:provider/edit', function (req, res) {
var id = req.params.provider;
var query = {"_id": id};
var update = {
name: req.body.name,
url: req.body.url
};
var options = {new: true};
Provider.findOneAndUpdate(query, update, options, function (err, provider) {
if (err) { return next(err); }
res.json(provider);
});
})
在这里,找到相关工厂:
ob.updateProvider = function (provider) {
return $http.put(urlBase +'/providers/' + provider._id + '/edit', provider)
.success(function(provider){
ob.providers.push(provider);
// angular.copy(provider, ob.providers);
})
};
这部分是在模态控制器中:
$scope.updateProvider = function (updatedProvider) {
var provider = updatedProvider;
providers.updateProvider(provider)
.success(function () {
$scope.status = 'Updated provider.';
}).
error(function(error) {
alert('Unable to update provider: ' + error);
});
};
我还使用了ui-bootstarpt中的模态,它也在BlogCtrl中
var modalInstance = $modal.open({
templateUrl: 'update_provider_model.html',
controller: function ($scope, $modalInstance, provider){
$scope.provider = provider;
$scope.ok = function () {
$modalInstance.close($scope.provider);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
},
size: size,
resolve: {
provider: function () {
return provider;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
最后,在模板update_provider_model.html内,在此模板的其余部分,我有ng-model =“provider.name”,ng-model =“provider.url”
<div class="modal-footer">
<button ng-click="updateProvider(provider);ok()" class="btn btn-success"><i class="icon-white icon-plus"></i> Update & Close</button>
<button ng-click="cancel()" class="btn btn-warning">Cancel</button>
</div>
在任何情况下,我都无法调用我的api put方法,它永远不会执行。我没有得到任何错误。我找不到有什么问题,哪个部分有问题。因此我无法将更新记录保存到数据库中。只有我可以在视图和我的模态中看到我的变化。如果有人可以建议我正确的解决方案,我会感谢你。
答案 0 :(得分:0)
我保留这个问题。它可能对你们中的一些人有用。我想补充一下url属性的问题。我已经定义了Url property type =“url”。但是,当我尝试使用一些随机文本时,我将值相等的文本放在url中,因此它返回undefined并且从未将该值存储在数据库中的变量中。 感谢@charlietfl的帮助。