Javascript Firebase搜索查询提供不同的结果
我正在开发搜索功能。我的实时数据库中有2000多种产品的列表 我试着用3个查询搜索Javascript Firebase搜索查询提供不同的结果,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在开发搜索功能。我的实时数据库中有2000多种产品的列表 我试着用3个查询搜索洗发水。但是没有一个查询返回所需的带有字符串“Shappo”的产品名称 但是query1&2返回的产品如下图所示,在“产品名称”节点中没有“洗发水” 我不明白为什么会这样 代码 const databaseRef = firebase.database().ref('S01/Products'); // Search Query 1 - Shows Different Product (Refe
洗发水
。但是没有一个查询返回所需的带有字符串“Shappo”的产品名称
但是query1&2
返回的产品如下图所示,在“产品名称”节点中没有“洗发水”
我不明白为什么会这样
代码
const databaseRef = firebase.database().ref('S01/Products');
// Search Query 1 - Shows Different Product (Refer above image)
var query = databaseRef.orderByChild("productName").startAt("Shampoo");
// Search Query 2 - Shows Different Product (Refer above image)
var query = databaseRef.orderByChild("productName").endAt("Shampoo");
// Search Query 3 - Shows Different Product (Refer above image)
var query = databaseRef.orderByChild("productName").startAt("Shampoo").endAt("~");
// Search Query 3 - Returns no Products
var query = databaseRef.orderByChild("productName").equalTo("Shampoo");
// Search Query 3 - Returns no Products
var query = databaseRef.orderByChild("productName").startAt("Shampoo").endAt("Shampoo" + "~");
query.once("value")
.then(function (snapshot) {
snapshot.forEach(function (childSnapshot) {
var t = $('#products_table').DataTable();
var key = childSnapshot.key;
var MID = childSnapshot.child("productMID").val();
var SID = childSnapshot.child("productSID").val();
var ProductID = childSnapshot.child("productID").val();
var name = childSnapshot.child("productName").val();
var unit = childSnapshot.child("productUnit").val();
var productMRP = childSnapshot.child("productMRP").val();
var price = childSnapshot.child("productSellingPrice").val();
var buying_price = childSnapshot.child("productBuyingPrice").val();
var productStatus = childSnapshot.child("productStatus").val();
var row = "";
t.row.add(['<td class="cell-60 responsive-hide"></td><td class="cell-300">', '<td>' + name + '</td>', '<td>' + unit + '</td>', '<td tabindex="1">' + productMRP + '</td>', '<td tabindex="2">' + price + '<\/td>', '<td tabindex="3">' + buying_price + '<\/td>', productStatus]).node().id = ProductID;
});
});
const-databaseRef=firebase.database().ref('S01/Products');
//搜索查询1-显示不同的产品(参见上图)
var query=databaseRef.orderByChild(“productName”).startAt(“洗发水”);
//搜索查询2-显示不同的产品(参见上图)
var query=databaseRef.orderByChild(“productName”).endAt(“洗发水”);
//搜索查询3-显示不同的产品(参见上图)
var query=databaseRef.orderByChild(“productName”).startAt(“洗发水”).endAt(“~”);
//搜索查询3-不返回任何产品
var query=databaseRef.orderByChild(“产品名称”).equalTo(“洗发水”);
//搜索查询3-不返回任何产品
var query=databaseRef.orderByChild(“productName”).startAt(“洗发水”).endAt(“洗发水”+“~”);
查询一次(“值”)
.then(功能(快照){
snapshot.forEach(函数(childSnapshot){
var t=$(“#产品_表”).DataTable();
var key=childSnapshot.key;
var MID=childSnapshot.child(“productMID”).val();
var SID=childSnapshot.child(“productSID”).val();
var ProductID=childSnapshot.child(“ProductID”).val();
var name=childSnapshot.child(“productName”).val();
var unit=childSnapshot.child(“productUnit”).val();
var productMRP=childSnapshot.child(“productMRP”).val();
var price=childSnapshot.child(“productSellingPrice”).val();
var buying_price=childSnapshot.child(“productBuyingPrice”).val();
var productStatus=childSnapshot.child(“productStatus”).val();
var行=”;
t、 行。添加([“”,+名称+“”,+单位+“”,+产品MRP+“”,+价格+“”,+购买价格+“”,产品状态])node().id=ProductID;
});
});
这样的查询:
var query = databaseRef.orderByChild("productName").startAt("Shampoo");
将生成按productName
字母顺序排列的产品列表,从以“Shappo”开头的名字开始,或从以“Shappo”开头的任何字符串开始。它不要求产品名称中包含“洗发水”。此外,如果名称不以“洗发水”开头,则不包括名称中嵌入“洗发水”的产品
例如,“我最喜欢的洗发水”将被排除在外,因为“M”<“S”。任何以字母大于“S”开头的产品名称都将包括在内,“超级肥皂”也将包括在内,因为“Su”跟在“Sh”后面
Firebase API不支持查询值中“包含”的文本(SQL:其中productName如%Shappo%
)。更多详细信息,请点击ElasticSearch链接,作为高级文本搜索选项