我是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
}
);
我还尝试了围绕此代码的多个不同版本。什么都没有用,所以我不认为它在这里值得一提。
答案 0 :(得分:15)
使用查询功能,您可以合并installRelease
和orderByChild
以获得所需的结果:
equalTo
Signing in Release Mode和web API reference for equalTo上的网络指南中有一个例子。
所以,在EmberFire中,这将转化为以下内容:
ref.child('people').orderByChild('name').equalTo('Peter').on('value', ...);
答案 1 :(得分:1)
虽然在大多数情况下tstirrat的回复会让你知道,但是有一个Ember插件用于查询firebase搜索。
你可以在这里查看: