如何在ember.js 2.0.0中使用emberfire查询firebase数据库中所有名称为equalTo xyz的项目?

时间:2015-10-11 23:45:25

标签: ember.js firebase emberfire

我是ember.js和firebase的新手。 我一直试图制作一些东西,需要我查询数据库中是否有匹配定义值的密钥。

根据guides.emberjs.com,以下示例应该有效:

this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) {
  // Do something with `peters`
});

但它没有。显然是因为我使用了emberfire插件。 经过几个小时的谷歌搜索,没有明确的解决方案。

emberfire docs谈论可用的论点。

  

参数

     

orderBy - String - 属性...
  。
  。
  。

     

equalTo - 字符串数字 - 创建一个包含与指定值匹配的子项的查询

并提供一个例子......

// app/routes/dinosaurs.js
export default Ember.Route.extend({
  model: function() {
    return this.store.find('dinosaur', {
      orderBy: 'height',
      limitToLast: 10,
      startAt: 5
    });
  }
});

虽然没有展示如何使用' equalTo'。 我已经对所有这些进行了测试,但我无法理解equalTo的工作原理。

关于此,还有其他解决方案,但它们都是v2.0.0之前的版本。所以我认为他们不会在v2.0.0之后工作。

Ember.js调试信息:

DEBUG: -------------------------------
DEBUG: Ember      : 2.0.0
DEBUG: Ember Data : 2.0.0
DEBUG: Firebase   : 2.3.1
DEBUG: EmberFire  : 1.6.0
DEBUG: jQuery     : 1.11.3
DEBUG: -------------------------------

正在使用的数据库:https://shoutoutdb.firebaseio.com/users

我不完全明白在这里应该如何工作,但我也没有得到任何线索。希望有人愿意帮忙。

如果您认为问题需要任何改进,请提出质疑。我已经详细说明了,我认为应该这样做 提前致谢。 :)

编辑: 我尝试使用的代码:

$E.store.find('user',{name:'Alpha'}).then(
    function (data) {
       //stuff done with the data
    }
);

我还尝试了围绕此代码的多个不同版本。什么都没有用,所以我不认为它在这里值得一提。

2 个答案:

答案 0 :(得分:15)

使用查询功能,您可以合并installReleaseorderByChild以获得所需的结果:

equalTo

Signing in Release Modeweb API reference for equalTo上的网络指南中有一个例子。

所以,在EmberFire中,这将转化为以下内容:

ref.child('people').orderByChild('name').equalTo('Peter').on('value', ...);

答案 1 :(得分:1)

虽然在大多数情况下tstirrat的回复会让你知道,但是有一个Ember插件用于查询firebase搜索。

你可以在这里查看:

https://www.npmjs.com/package/ember-emberfire-find-query