gpt4 book ai didi

angularjs - 更新函数仅在数据库中存储名称属性而不是 url 属性,而是存储未定义

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:51 24 4
gpt4 key购买 nike

我使用nodejs、mongoose 和 Angular 来实现带有平均堆栈的 RestAPI,我尝试更新数据库中的提供程序记录。在这里你可以找到我的 put 方法:我有我的架构描述 here这就是我在控制台中得到的内容。

对象 {_id: "553d27a24c47696420c6ee39", name: "nn", url: undefined, __v: 0, posts: Array[0]…}

如果您通过 postman 输入数据,则此 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);
})
};

这部分位于模态 Controller 内部:

$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 中的Modal,它也在 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 方法,并且它永远不会执行。我没有收到任何错误。我找不到哪里出了问题以及哪个部分有问题。因此我无法将更新记录保存到数据库中。只有我可以在 View 和模态中看到我的更改。如果有人可以建议我正确的解决方案,我将非常感谢。

最佳答案

我保留这个问题。它可能对你们中的一些人有用。我想补充一下 url 属性的问题是什么。我已经定义了 Url 属性 type="url"。但是,当我尝试使用一些随机文本时,我将值设置为等于文本而不是 url,因此它返回未定义的值,并且从未将该值存储在数据库的变量中。感谢@charlietfl 的帮助。

关于angularjs - 更新函数仅在数据库中存储名称属性而不是 url 属性,而是存储未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com