我正在使用 Ember.js 和 ember-data 为自制 API 制作 GUI。
我一直在按照本教程处理身份验证,但我想使用 ember-data 而不是自定义 jQuery 请求。
我必须做的一件事是调用 API 来创建一个新会话,通过发送电子邮件和密码,然后 API 将返回一个 API Key 对象。
这是我的 LoginController 处理 loginUser 操作(它是 CoffeeScript):
App.LoginController = Ember.ObjectController.extend
actions:
loginUser: ->
session = @store.createRecord 'session',
email: @get 'email'
password: @get 'password'
session.save()
这是我在创建会话时得到的结果:
{
"users": [
{
"id": "525fa0286c696c0b14040000",
"email": "john.doe@mydomain.com",
"first_name": "John",
"surname": "Doe"
}
],
"api_key": {
"id": "526e464c6c696c07d2000000",
"type": "session",
"key": "6b824d6a-a065-4b6f-bb28-5c19389760f8",
"expires_at": "2013-10-28T11:41:08+00:00",
"user_id": "525fa0286c696c0b14040000"
}
}
我有 Session、ApiKey 和 User 模型。我可以创建会话,但我不明白的是如何访问save()
方法的返回值。
我知道我的 ApiKey 和 User 已加载到某个地方,因为save()
如果它们各自的 Ember 模型不存在但我不知道如何访问它们,我会收到错误消息。
我尝试使用save()
类似then()
或didCreate
事件的回调,但缺少有关传递给这些回调的参数以及如何使用它们的文档。
- Ember.js 1.1.2
- 灰烬数据1.0.0.beta.3
编辑: 我试图在我的 API 上创建一个actuel Session 模型,导致这个 JSON 输出:
{
"api_keys": [
{
"id": "526f69526c696c07d2110000",
"type": "session",
"key": "4c26af37-2b21-49c2-aef5-5850a396da0b",
"expires_at": "2013-10-29T08:22:50+00:00",
"user_id": "525fa0286c696c0b14040000"
}
],
"users": [
{
"id": "525fa0286c696c0b14040000",
"email": "john.doe@coreye.fr",
"first_name": "John",
"surname": "Doe"
}
],
"session": {
"id": "526f6e666c696c18c0010000",
"api_key_id": "526f69526c696c07d2110000"
}
}
(注意根元素是 now session
)
它不能更好地工作,因为现在我的保存操作导致以下错误(不在控制台中,但then
指向错误回调):
Object function () { [...] } has no method 'eachTransformedAttribute'
我收到此错误,是否在 Ember Data 模型中声明了 Session 和 ApiKey 之间的关系...