【发布时间】:2018-03-06 00:12:21
【问题描述】:
我正在返回来自 firebase 查询的结果。结果是一组具有不同属性的对象。这是我正在制作的汽车应用程序。每个对象看起来像这样
{
make: "make",
model: "model",
year: "year",
gas: "petrol",
mileage: "mileage",
images: {
image1: "url",
image2: "url"
}
}
我需要让用户能够改进这些结果,并且我正在尝试提出一个可靠的解决方案
问题: 我需要用户能够细化 firebase 查询的结果。 用户将为他们的细化搜索选择不同的选项,所以我需要我的函数来处理这个
我在做什么
//Heres' how I planned to pass the refinement options
refinements = {
make: 'value',
model: 'value',
year: 'value'
}
//currentResults is an array of objects with different properties
const refineResults = (currentResults, refinements) => {
newResults = [];
for (int i = 0; i < currentResults.count; i++ ){
let currentResult = currentResult[i];
for(int i = 0; i < refinements.count; i++){
}
}
}
我知道我对这个功能还不是很了解,但我什至不确定我是否以正确的方式接近这个功能。我不确定如何通过 for 循环访问属性值,作为细化。[I] 比较没有意义
我基本上想遍历我当前的结果,如果我的优化对象中的所有值都相等,那么我想将此结果添加到我的新结果数组中。
感谢您的任何意见
【问题讨论】:
-
firebase 不能接受查询?你为什么要处理“改进”?
-
你能告诉我们
currentResults的数据吗?你说它是一个具有不同属性的箭头......听起来它是一个对象。如果你试图循环一个对象,你可能会遇到问题。 -
根据我的理解,您可能需要考虑使用
filter。 There's an example using JSON on MDN -
是的,firebase 可以接受查询,但是我已经在执行 firebase 查询以获得初始结果。我还想保留旧结果和新结果,以便我的用户可以选择根据不同的值优化结果@Stretch0 是的,currentResults 数据是一个对象数组,与我帖子开头的对象完全一样。我在一个数组中返回大约 100 个这些对象。谢谢
-
@Icepickle:OP 很可能希望过滤多个属性。 Firebase 数据库查询只能对单个属性进行排序/过滤。在许多情况下,可以将要过滤的值组合成单个(合成)属性。有关此方法和其他方法的示例,请在此处查看我的答案:stackoverflow.com/questions/26700924/…。但是,如果无法在查询中完成过滤,那么在代码中进行过滤可能是唯一剩下的选择。当然:在这种情况下,注意带宽使用是关键。
标签: javascript reactjs firebase-realtime-database