我正在使用firebase进行数据存储.数据结构如下:
products:{
product1:{
name:"chocolate",
}
product2:{
name:"chochocho",
}
}
Run Code Online (Sandbox Code Playgroud)
我想对这些数据执行自动完成操作,通常我会像这样编写查询:
"select name from PRODUCTS where productname LIKE '%" + keyword + "%'";
Run Code Online (Sandbox Code Playgroud)
因此,对于我的情况,例如,如果用户输入"cho",我需要同时带上"chocolate"和"chochocho".我考虑将所有数据放在"产品"块下,然后在客户端进行查询,但这可能需要大量数据库的内存.那么,我该如何执行sql LIKE操作呢?
谢谢
我想在我的应用程序中创建一个简单的搜索,但在关于它的互联网上找不到任何东西,这比2014年更新.必须有更好的方法.有startAt和endAt函数,但它们不能按预期工作,并且区分大小写.你们是如何解决这个问题的?2016年该功能如何仍然不存在?
这段代码工作正常.
我想要的唯一改进是 - 当我传递"Pi"时,它会获取以名称"Pi"开头的所有项目对象,但是当我输入"pi"时它什么都不返回!
这意味着我希望这种方法startAt(itemName)不区分大小写.所以这应该适用于任何事情(小写或大写),在这种情况下"Pi"或"pi"等.
//5. Get menu items from RestaurantMenu
this.getMenuItemFromRestaurantMenu = function(callback, itemName) {
var ref_restMenu = firebase.database().ref()
.child('Restaurants')
.child('Company')
.child('menu');
//Check if item is already exist!
ref_restMenu.orderByChild("itemName").startAt(itemName).once("value", function(snapshot) {
var data = snapshot.val();
if(data !== null) {
//We will ger item name and restaurant id from this data.
callback(data);
} else {
//Item not found in globalMenu
console.log("%c Item not found in Global Menu", "color: red");
}
});
}
Run Code Online (Sandbox Code Playgroud) 我已经在我的Android应用中实现了Firebase实时数据库,一切都很好。我正在尝试添加一个搜索功能,并且我只能通过起始单词匹配来搜索数据库。下面是我的数据库快照:
我正在查询movieName。现在,我可以搜索查询字符串是否为Pets / Pe / pet。但是,当我搜索动物时,结果为零。因此,基本上我正在寻找的是在字符串中任何位置使用查询文本搜索数据库。即,我应该能够搜索动物/和/宠物,并且应该获得包含搜索查询的结果。
下面是到目前为止的代码。
mDatabaseReference.child("recent").getRef().orderByChild("movieName").startAt(query)
.endAt(query + "\uf8ff")
Run Code Online (Sandbox Code Playgroud)