Ember 数据查询过滤不适用于 Firebase
Ember Data query filtering doesn't work with Firebase
假设我在 Firebase 数据库中有以下数据
{
"carros" : {
"-LAy3Qqrvq_sIhyLJQED" : {
"añoFabricacion" : 1932,
"marca" : "toyota",
"nombre" : "nombre1"
},
"-LAy3r-Gm_NWW9_VkGR3" : {
"añoFabricacion" : 1931,
"marca" : "audi",
"nombre" : "nombre2"
},
"-LAy3v9L2wecTDZqpok9" : {
"añoFabricacion" : 1934,
"marca" : "toyota",
"nombre" : "nombre3"
}
}
}
我想在控制台中打印 "marca" 属性等于 "toyota" 的对象的属性 "nombre"。我写了一个控制器代码如下:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
mostrar() {
this.get('store').query('carro', {
filter: {
marca: 'toyota'
}
}).then(function(carros) {
carros.forEach(function(carro) {
console.log(carro.get('nombre'));
})
});
}
}
});
而模型"carro.js"对应的代码是:
import DS from 'ember-data';
export default DS.Model.extend({
nombre: DS.attr('string'),
marca: DS.attr('string'),
añoFabricacion: DS.attr('number')
});
问题是我获得了以下输出:
nombre1
nombre2
nombre3
但正确的输出必须是:
nombre1
nombre3
为什么会出现此错误?
基于此处的文档:https://www.learnhowtoprogram.com/ember-js/ember-extended/firebase-queries
看起来正确的查询如下:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
mostrar() {
this.get('store').query('carro', {
orderBy: 'marca'
equalTo: 'toyota'
}).then(function(carros) {
carros.forEach(function(carro) {
console.log(carro.get('nombre'));
});
});
}
}
});
假设我在 Firebase 数据库中有以下数据
{
"carros" : {
"-LAy3Qqrvq_sIhyLJQED" : {
"añoFabricacion" : 1932,
"marca" : "toyota",
"nombre" : "nombre1"
},
"-LAy3r-Gm_NWW9_VkGR3" : {
"añoFabricacion" : 1931,
"marca" : "audi",
"nombre" : "nombre2"
},
"-LAy3v9L2wecTDZqpok9" : {
"añoFabricacion" : 1934,
"marca" : "toyota",
"nombre" : "nombre3"
}
}
}
我想在控制台中打印 "marca" 属性等于 "toyota" 的对象的属性 "nombre"。我写了一个控制器代码如下:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
mostrar() {
this.get('store').query('carro', {
filter: {
marca: 'toyota'
}
}).then(function(carros) {
carros.forEach(function(carro) {
console.log(carro.get('nombre'));
})
});
}
}
});
而模型"carro.js"对应的代码是:
import DS from 'ember-data';
export default DS.Model.extend({
nombre: DS.attr('string'),
marca: DS.attr('string'),
añoFabricacion: DS.attr('number')
});
问题是我获得了以下输出:
nombre1
nombre2
nombre3
但正确的输出必须是:
nombre1
nombre3
为什么会出现此错误?
基于此处的文档:https://www.learnhowtoprogram.com/ember-js/ember-extended/firebase-queries
看起来正确的查询如下:
import Controller from '@ember/controller';
export default Controller.extend({
actions: {
mostrar() {
this.get('store').query('carro', {
orderBy: 'marca'
equalTo: 'toyota'
}).then(function(carros) {
carros.forEach(function(carro) {
console.log(carro.get('nombre'));
});
});
}
}
});