gpt4 book ai didi

javascript - ngResource 在 $save() 之后从 POST 响应中检索唯一 ID

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:29 24 4
gpt4 key购买 nike

所以我有一个定义如下的资源:

angular.module('questionService', ['ngResource'])
.factory('QuestionService', function($http, $resource) {
var QuestionService = $resource('/api/questions/:key', {}, {
query: {
method:'GET',
isArray:true,
},
save: {
method: 'POST',

}
});

return QuestionService
});

然后我接受一些表单输入并执行以下操作

var newQ = {
txt: $scope.addTxt
};

QuestionService.save(newQ)

服务器通过重新发出对象的 JSON 并使用新的唯一 ID 设置位置 header 来响应 POST 请求。问题是 Angular 没有将返回的 JSON 或位置 header 保存到对象中,也没有为将来的操作设置来自服务器的 ID。我尝试了很多事情,例如:

transformResponse: function(data, headersGetter) {
locationHeader = headersGetter().location;
key = locationHeader.split('/').slice(-1)[0];
data.key = key;
return data;
}

但是返回的数据项似乎没有被使用。我错过了什么吗?这似乎是与 REST api 交互的一个非常常见的用例。

谢谢!

最佳答案

您需要有一个成功处理程序来手动将新 ID 分配给 newQ:

QuestionService.save(newQ, function(data) {
newQ.id = data.id;
});

但是有更好的方法可以达到同样的效果。因为您的 QuestionService 是一个资源类对象,您可以像这样实例化您的 newQ:

var newQ = new QuestionService({text: $scope.addTxt});

然后,调用newQ$save():

newQ.$save();

现在 newQ 应该有服务器返回的新 ID。

关于javascript - ngResource 在 $save() 之后从 POST 响应中检索唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100323/

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