ember.js 将Rails Json响应存储在成员中

1tu0hz3e  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(132)

我正在进行用户身份验证。
目前我正在发布一个带有用户名和密码的会话,它将被发送到Rails bcrypt进行身份验证,如果身份验证为真,则将返回一个json的用户对象。
我将如何在ember中抓取此用户,以便将其存储在我的服务中。
登录功能:

login(user) {
    console.log("this is working ")

    //this.get('sessionaccount').login(user)

    this.store.createRecord('session', {
        email: this.currentModel.email,
        password: this.currentModel.password
    }).save().then(function(data) {
        console.log(data.id) 
        this.id = data.id
        this.get('sessionaccount').login(data)
    });
}
at0kjp5o

at0kjp5o1#

Ember Data应该和资源一起使用。它不能很好地和其他类型的数据一起使用。我假设你只有一个会话客户端,所以我不建议用Ember Data建模,而是使用普通的fetch:

async login() {
  let response;

  try {
    response = await fetch('/login', {
      method: 'POST',
      headers: {
        Content-Type: 'application/json'
      },
      body: JSON.stringify({
        email: this.currentModel.email,
        password: this.currentModel.password
      })
   });
  } catch (error) {
    // handle connectivity issues
  }

  if (!response.ok) {
    // handle server-side errors
    // this may include wrong credentials
  }

  // parse the returned data as json
  let data = await resonse.json();

  // do something with the returned data
}

我使用async/await而不是改变.then(),因为在我看来它更容易阅读。
如果服务器返回的数据是一个资源,表示应该使用Ember Data处理的数据,则可以(也应该)使用pushPayload() method of Ember Data's StoreService将其加载到存储中。

相关问题