Javascript 如何执行sql";例如;火基行动?
我正在使用firebase进行数据存储。数据结构如下所示:Javascript 如何执行sql";例如;火基行动?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在使用firebase进行数据存储。数据结构如下所示: products:{ product1:{ name:"chocolate", } product2:{ name:"chochocho", } } "select name from PRODUCTS where productname LIKE '%" + keyword + "%'"; 我想对此数据执行自动完成操作,通常我会这样编写查询: products:{ produc
products:{
product1:{
name:"chocolate",
}
product2:{
name:"chochocho",
}
}
"select name from PRODUCTS where productname LIKE '%" + keyword + "%'";
我想对此数据执行自动完成操作,通常我会这样编写查询:
products:{
product1:{
name:"chocolate",
}
product2:{
name:"chochocho",
}
}
"select name from PRODUCTS where productname LIKE '%" + keyword + "%'";
因此,对于我的情况,例如,如果用户键入“cho”,我需要同时带来“chocolate”和“chochocho”。我考虑将所有数据置于“products”块下,然后在客户机上进行查询,但是对于一个大型数据库来说,这可能需要大量内存。那么,如何执行类似sql的操作呢
感谢更新:随着Firebase云函数的发布,还有另一种优雅的方法可以做到这一点。这里的折衷是函数/Algolia几乎是零维护的,但成本可能比您自己的in-roll节点要高 Firebase中目前没有内容搜索。随着API的不断扩展,许多更常见的搜索场景(如按属性搜索)将被烘焙到Firebase中 同时,你也可以自己种植。然而,搜索是一个巨大的主题(比如创建一个巨大的实时数据存储),它被大大低估了,并且是应用程序的一个关键功能——而不是一个你想临时或甚至依靠Firebase这样的人来为你提供的功能。因此,使用可扩展的第三方工具来处理索引、搜索、标记/模式匹配、模糊逻辑、加权排名等通常更简单 Firebase博客提供了一个简单的方法,可以将一个快速但功能极其强大的搜索引擎集成到Firebase后端 基本上,它分两步完成。监控数据并为其编制索引:
var Firebase = require('firebase');
var ElasticClient = require('elasticsearchclient')
// initialize our ElasticSearch API
var client = new ElasticClient({ host: 'localhost', port: 9200 });
// listen for changes to Firebase data
var fb = new Firebase('<INSTANCE>.firebaseio.com/widgets');
fb.on('child_added', createOrUpdateIndex);
fb.on('child_changed', createOrUpdateIndex);
fb.on('child_removed', removeIndex);
function createOrUpdateIndex(snap) {
client.index(this.index, this.type, snap.val(), snap.name())
.on('data', function(data) { console.log('indexed ', snap.name()); })
.on('error', function(err) { /* handle errors */ });
}
function removeIndex(snap) {
client.deleteDocument(this.index, this.type, snap.name(), function(error, data) {
if( error ) console.error('failed to delete', snap.name(), error);
else console.log('deleted', snap.name());
});
}
var Firebase=require('Firebase');
var ElasticClient=require('elasticsearchclient')
//初始化我们的ElasticSearchAPI
var client=new-ElasticClient({host:'localhost',端口:9200});
//侦听Firebase数据的更改
var fb=newfirebase('.firebaseio.com/widgets');
fb.on('child_added',createOrUpdateIndex);
fb.on('child_changed',createOrUpdateIndex);
fb.on(“移除儿童”,移除索引);
函数createOrUpdateIndex(快照){
client.index(this.index,this.type,snap.val(),snap.name())
.on('data',函数(data){console.log('index',snap.name());})
.on('error',函数(err){/*处理错误*/});
}
函数removeIndex(捕捉){
client.deleteDocument(this.index、this.type、snap.name()、函数(错误、数据){
if(error)console.error('删除失败',snap.name(),错误);
else console.log('deleted',snap.name());
});
}
要执行搜索时,请查询索引:
<script src="elastic.min.js"></script>
<script src="elastic-jquery-client.min.js"></script>
<script>
ejs.client = ejs.jQueryClient('http://localhost:9200');
client.search({
index: 'firebase',
type: 'widget',
body: ejs.Request().query(ejs.MatchQuery('title', 'foo'))
}, function (error, response) {
// handle response
});
</script>
ejs.client=ejs.jQueryClient('http://localhost:9200');
client.search({
索引:“firebase”,
键入:“小部件”,
正文:ejs.Request().query(ejs.MatchQuery('title','foo'))
},函数(错误,响应){
//处理响应
});
弹性搜索解决方案基本上绑定到add set del,并提供了一个可以完成文本搜索的get by。 然后将内容保存在mongodb中 虽然我喜欢和Recomand elastic搜索项目的成熟度,但也可以不用另一台服务器,只使用firebase数据库。 这就是我的意思: () 对于索引部分,功能主要包括:
后续的单词搜索可以直接在单词子级中查找文档。使用hits实现多词搜索我相信您可以做到:
admin
.database()
.ref('/vals')
.orderByChild('name')
.startAt('cho')
.endAt("cho\uf8ff")
.once('value')
.then(c => res.send(c.val()));
这将查找名称以cho开头的VAL
firebase上的SQL“LIKE”操作是可能的
let node = await db.ref('yourPath').orderByChild('yourKey').startAt('!').endAt('SUBSTRING\uf8ff').once('value');
这个查询对我来说是有效的,它看起来像MySQL中的下面语句
从商店广告中选择*,其中大学喜欢%ps%代码>
query=database.getReference().child(“StoreAds”).orderByChild(“University”).startAt(“ps”).endAt(“\uf8ff”)代码>啊,谢谢你,但我实际上在android应用程序中使用firebase,而且我对javascript知之甚少。你能给我一个链接或者一个小例子,比如这个javascript例子,它是用java代码编写的吗?我还将尝试理解现在的javascript代码:)这在2016年仍然相关吗?概念上相关。API调用的语法略有不同。嗨,加藤,我在这里发布了一个关于使用新Firebase进行闪光灯设置的问题,希望你能提供一些知识!我会非常感激的,谢谢!遗憾的是,你必须升级到Blaze计划才能在Algolia中使用Firebase云函数你找到了使用Firebase的方法吗?@FaridAlHaddad我问这个问题已经很久了,我甚至不记得问过了,但看起来我可能还没有找到解决方案并决定做其他事情。哈哈。。解决办法是什么?你能分享一下吗?Thanks@FaridAlHaddad我真的不记得了,但看起来很多人都在寻找这个问题的答案,所以我会再次搜索t