6

我是 ember.js 和 firebase 的新手。我一直在尝试做一些需要我在数据库中查询与定义值匹配的键的东西。

根据guides.emberjs.com,以下示例应该可以工作:

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

但事实并非如此。显然是因为我正在使用 emberfire 插件。经过数小时的谷歌搜索,没有明确的解决方案。

emberfire文档讨论了可用的参数。

论据

orderBy -字符串- 属性 ...

.
.

equalTo - String , Number , Null - 创建一个查询,其中包括与指定值匹配的子项。

并举个例子……

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

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

SO上还有其他解决方案,但它们都是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

我不完全理解 equalTo 应该如何在这里工作,但我也没有任何线索。希望这里有人愿意提供帮助。

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

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

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

我还围绕此代码尝试了多个不同的版本。没有任何效果,所以我认为这里甚至不值得一提。

4

2 回答 2

15

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

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

equalTo 的 Web API 参考和复杂查询的 Web 指南中有一个示例。

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

this.store.query('person', { orderBy: 'name', equalTo: 'Peter' });
于 2015-10-12T21:19:48.603 回答
1

尽管在大多数情况下 tstirrat 的响应会让您顺利通过,但有一个 Ember 插件可用于查询 firebase 搜索。

你可以在这里查看:

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

于 2017-01-08T10:36:51.460 回答