如果我的数据库中装满了包含价格,品牌,型号,年份,里程,颜色,样式,传输等信息的车辆,我如何构建数据以便用户可以过滤所有数据?< / p>
请注意,我希望用户可以过滤一系列值,例如,您希望价格介于3000美元到6000美元之间的价格。有没有办法做到这一点?我假设您可能能够以某种方式复制数据或散列数据,以便能够创建您可以搜索的值,但我不确定如何处理这类事情。
服务器端和客户端可以完成多少工作?我很茫然。
例如,现在,您只能按一个键订购。假设我的数据结构只是汽车及其键和值的列表。
cars {
"someLongId": {
price: 5000,
make: "Honda",
model: "Accord",
year: 1996,
mileage: 154000,
color: "blue",
transmission: "standard"
},
}
问题是此结构仅支持对一个键进行过滤。我需要以下列方式复制这些数据,以便允许用户接收数据库中的所有蓝色Hondas:
carsByColor: {
"blue": {
"someLongId": {
price: 5000,
make: "Honda",
model: "Accord",
year: 1996,
mileage: 154000,
color: "blue",
transmission: "standard"
}
}
}
然后他们就会收到这样的蓝色本田:
var ref = firebase.database().ref('carsByColor/blue');
ref.orderByChild('make').equalTo('Honda').on('child_added', data => {
// do something with data
});
我想知道的是,如果我想要像问题开头所述的8种不同的过滤器,我将如何构建我的数据。将数据复制到可能存在于100多个地方的地方是一个好主意,这样我就可以找到所有1996年本田雅阁的蓝色,价格在3000到6000美元之间,里程低于180,000?
我的理解是,我需要有一条不同的路径,所有的汽车数据都会被复制。因此,我将有一条名为“carsByColor / blue / Honda / Accord / 1996”的路径,但也有1997年,1998年等等。但是,我也必须为本田的任何其他车型做这件事。获得基本过滤似乎需要做很多工作。这就是我在服务器/客户端上进行的所有搜索。