2014-10-19 4 views
3

При прототипии функций входа в мое приложение ember, я использую маршрут, чтобы сделать запрос в хранилище на основе заданного имени пользователя. Если это имя пользователя не найдено, мой API возвращает объект с свойством message. Вот этот маршрут:Получение свойств Query Find

App.LoginRoute = Ember.Route.extend({ 
    actions: { 
     getUsername: function(username){ 
      this.store.find('user', {username: username}).then(function(user){ 
      var eid = user.get('eid'); 
      console.log(eid); 
      if (eid) { 
       self.controller.send('transition', "index"); 
       } 
      else { 
       self.controller.set('model', "Oops! That's not right.");} 
       }); 
      } 
    } 
});` 

Если имя пользователя существует в базе данных, API отправит обратно пользовательский объект. Он загружается в магазин просто отлично, если имя пользователя существует, я могу видеть запись в Data in Ember Inspector. Однако я не могу понять, как получить свойства этого пользовательского объекта.

В .then Я передаю возвращаемую информацию и попытаюсь позвонить .get, но это всегда возвращает undefined.

Каков правильный способ получить свойства того, что возвращается с store.find('store', {query})?

ответ

2

найти по запросу возвращает коллекцию.

this.store.find('user', {username: username}).then(function(userCollection){ 
    // this would be the user if it existed 
    var user = userCollection.get('firstObject'); 
    self.controller.send('transition', "index"); 
});  

Вы, вероятно, следует возвращать код ошибки 404 вместо действительного ответа, когда пользователь не существует, то попал в часть отказа обетования.

this.store.find('user', {username: username}).then(function(userCollection){ 
    // this would be the user if it existed 
    var user = userCollection.get('firstObject'); 
    self.controller.send('transition', "index"); 
}, function(){ 
    // failure happened 
    self.controller.set('model', "Oops! That's not right.");} 
});  
+0

Благодарим за исправление моего понимания того, что возвращает запрос на поиск! Я боролся с этим уже пару дней. Ваше решение работало точно так, как мне нужно. Спасибо! – carebdayrvis

+1

Если вы запутались в том, что возвращается, вы всегда можете использовать '.toString()', чтобы сообщить вам, какой тип модели возвращается. В примере Kingpin2k в '.then()' вы бы сделали 'console.log (userCollection.toString()), который скажет вам, что это коллекция. –

+0

Любые советы по тому, почему то, что возвращается, не содержит контента? Я ничего не могу извлечь из этого. Я хотел бы узнать информацию о том, что было возвращено, но 'userCollection.get ('firstObject')' возвращает undefined. – carebdayrvis

Смежные вопросы