Javascript Angular$http-在一个函数调用中发出请求并返回响应
我正在尝试用Angular创建一个模型类型类,它近似于Rails模型约定,并具有基本的数据库交互方法。这个想法本质上是创建一个JavaScript ORM,它通过一个可预测的内部API在Rails后端工作。大概是这样的:Javascript Angular$http-在一个函数调用中发出请求并返回响应,javascript,ruby-on-rails,angularjs,coffeescript,angular-promise,Javascript,Ruby On Rails,Angularjs,Coffeescript,Angular Promise,我正在尝试用Angular创建一个模型类型类,它近似于Rails模型约定,并具有基本的数据库交互方法。这个想法本质上是创建一个JavaScript ORM,它通过一个可预测的内部API在Rails后端工作。大概是这样的: mod = angular.module('Models') mod.factory 'User', ($http) -> class User constructor: (properties) -> _.extend(this, pro
mod = angular.module('Models')
mod.factory 'User', ($http) ->
class User
constructor: (properties) ->
_.extend(this, properties)
@find: (id) ->
$http.get("/api/v1/users/#{id}")
.success (response) ->
return User.new(response)
Object {then: function, catch: function, finally: function, success: function, error: function}
User.find(5).success (response) ->
user = User.new(response)
请求命中的API操作将返回该ID的序列化用户,success
函数将其包装为该类的对象(user.new(response)
)。这样,我就可以做到:
user = User.find(5)
在我的CoffeeScript中,user
对象将是数据库中ID为5的用户,包装为我的CoffeeScript类的成员
问题是上面的编码方式,当我调用User.find(5)
时,它返回$http promise对象,它可以调用.success
etc,而不是调用$http.get(…)
打开success
案例并从中初始化User
对象的结果。因此,如果我在上面的操作之后使用console loguser
,我会看到如下内容:
mod = angular.module('Models')
mod.factory 'User', ($http) ->
class User
constructor: (properties) ->
_.extend(this, properties)
@find: (id) ->
$http.get("/api/v1/users/#{id}")
.success (response) ->
return User.new(response)
Object {then: function, catch: function, finally: function, success: function, error: function}
User.find(5).success (response) ->
user = User.new(response)
我怎么能这样做?我尽量避免这样做:
mod = angular.module('Models')
mod.factory 'User', ($http) ->
class User
constructor: (properties) ->
_.extend(this, properties)
@find: (id) ->
$http.get("/api/v1/users/#{id}")
.success (response) ->
return User.new(response)
Object {then: function, catch: function, finally: function, success: function, error: function}
User.find(5).success (response) ->
user = User.new(response)
因为上面提到的这类问题有点挫败了我正在尝试的ORM的易用性/目的性。(我从一个模型开始,但最终希望将其提取到一个基本模型)。有什么想法吗?我不熟悉棱角分明的承诺(而且在JavaScript方面也不是很专业),对此我已经有一段时间了
谢谢
Sasha大多数js ORM都是基于承诺的,这就是js方式……为什么要重新发明轮子?有很多解决方案,包括Angular自己的。