我的 POST 和 PUT 返回在服务器上看到的实体的当前状态。如何在服务器调用后告诉 Restangular 更新其模型对象?
以防万一——为什么?因为在保存/更新期间,服务器可能已经计算了一些字段。因为其他客户端可能已经同时更新,我想确保当前正在更新的客户端是最新的。
到目前为止,我只发现了这个:
var res = {foo: "bar"};
var cb = function(response) {
$.extend(res, response);
}
// POST / create
Restangular.all("resource").post(res).then(cb);
// PUT / update
res.put().then(cb);
它看起来既肮脏又普遍,我怀疑一定有更好的方法。
编辑
上面的代码只演示了两个不同的操作。我的目标不是在创建实体后向服务器发送更新,而是在客户端更新状态。与服务器同步状态,如果你愿意的话。
当我发布一个对象时:
var res = {foo: "bar"};
Restangular.all("resource").post(res);
服务器响应具有以下内容:
{"foo": "bar", "id": 15}
...然后我希望 Restangularres
自动更新和重新调整对象,因此它具有 ID,可以是put()
等。
现在是一个不同/互补的场景。当我放置一个 Restangular 对象时:
var res = Restangular.one("resource", 15).get();
// returns {foo: "bar", id: 15}
res.put();
服务器总是回复对象的当前状态,可能是:
{"foo": "buzz", "id": 15}
...所以我希望 Restangularres
在这个 PUT 之后自动更新。