车辆的Firebase数据结构

时间:2017-03-15 00:22:10

标签: firebase firebase-realtime-database

如果我的数据库中装满了包含价格,品牌,型号,年份,里程,颜色,样式,传输等信息的车辆,我如何构建数据以便用户可以过滤所有数据?< / 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年等等。但是,我也必须为本田的任何其他车型做这件事。获得基本过滤似乎需要做很多工作。这就是我在服务器/客户端上进行的所有搜索。

0 个答案:

没有答案