【发布时间】:2014-05-19 01:07:33
【问题描述】:
我正在评估 JS 持久性库。我在 Angular 堆栈上,因此 ngResource 和 Restangular 是选项,但 Breeze 和 Backbone 的模型/集合也是如此,我对其他人开放。
是否有一个 JS 持久性库可以监控模型的更改并仅对更改的属性执行PATCH?
例子:
// Get a pretend user with a name, email, and some other stuff.
var currentUser = user.get(42)
// Change only the email address
currentUser.email = 'tractorDaddy@aol.com'
// Save changes
// The model could know that only one property has changed.
// The model could do a PATCH of a partial object, but I don't know a library that does.
currentUser.save()
这似乎应该是默认实现,但这些库都没有这样做,我可以看到。
Backbone 的模型根据模型的新颖性决定是 POST 还是 PUT(我记得是由 id 的存在决定的)。我认为这是一个不错的举措,可以扩展到包括PATCH。
我知道 Restangular 和其他人有一个 .patch() 方法,但我相信在所有情况下你都必须明确指定对象部分。
有这样的库吗?
【问题讨论】:
-
你最后用了什么?
-
@jrhicks:我选择了restangular。我不认为我会再次做出同样的决定。它提供的价值并不超过必须根据他的抽象来思考。 (例如:“好的,我想发帖到
api/users/7/preferences,我如何在Restangular 中写这个?)对于需要精简PATCH的对象(因为要在PUT上进行操作会很大),我自己做 diff。POST和PUT之间的区别我还需要跟踪。情况并不理想。Angular 团队正在为 2.0 开发看起来很棒的丰富数据模型:tinyurl.com/pa7rxf8
标签: javascript angularjs rest restangular ngresource