我有一个Ember应用程序,用户输入商店编号。我有一个Express.js API连接到MongoDB。
我设置了"商店"我的控制器中的变量如此:
App.StoreNumberRoute = Ember.Route.extend({
setupController: function(controller, model){
store = this.store;
}
});
在我的事件捕手中(我使用Bacon.js进行事件)我得到他们输入的数字并使用Ember语法找到模型:
var hwStore = store.find('hwStores', { number: value });
我需要确保他们输入的号码是有效的商店,然后弹出一个模式,向他们展示他们输入的商店号码的信息。
我可以通过Express.js的控制台消息验证是否正在调用正确的路由:
GET: http://localhost:3000/hwStores?number=1234
并且实际上正在返回正确的结果:
{ "hwStores": [
{
"city": "Miami",
"country": "USA",
"number": 1234
}]
}
我甚至拥有Chrome的Ember扩展名,我可以看到(通过向下钻取到令人困惑的对象结构中)从调用返回的数据包含有关硬件商店的所有详细信息:城市,国家/地区等。
问题是,我无法获取任何数据。什么都行不通。
hwStore.objectAt(0); //<-- undefined
hwStore.firstObject; //<-- undefined
hwStore.firstObject.property('model.[]') //<-- undefined is not a function
我无法&#34;得到&#34;任何要进行验证的数据,并显示模态。我已经尝试了所有这些:
hwStore.objectAt(0).get('city');
hwStore.firstObject.get('city');
没有任何作用。为什么这么混乱?
答案 0 :(得分:2)
Ember Data返回一个promise,而不是阻塞同步结果。
var hwStore = store.find('hwStores', { number: value });
您需要等待承诺解决才能获得通话结果
hwStore.then(function(results){
console.log(results.get('firstObject.city'));
console.log(results.objectAt(0).get('city'));
});
以下是一个例子