Javascript 防止从firebase获取数据的延迟时间(请检查详细信息以确保清晰)
注:Javascript 防止从firebase获取数据的延迟时间(请检查详细信息以确保清晰),javascript,html,firebase-realtime-database,Javascript,Html,Firebase Realtime Database,注: firebase的异步特性在这里已经讨论了数千次,但我的低声誉数字不允许对现有问题发表评论。这就是我问这个问题的原因 我是一个noob,所以请帮助我以一种易于理解的方式理解实现 实施步骤: 用户在HTML输入框中输入一个值 在firebase db中搜索输入值(showMessage()被调用) 根据步骤2中的搜索结果显示适当的结果 面临的问题: 步骤3中显示的消息几乎平均需要1.75秒才能显示。这种体验对用户不友好。我希望尽快显示消息,即希望缩短提取时间 可能的根本原因: 要么我从fir
var全名;
函数showMessage(){
提取数据();
}
函数extractData(){
测试(功能(返回值){
自定义消息=搜索消息(返回值);
var container=document.querySelector(“#占位符”);
var para=document.createElement('p');
var custom_message=“快乐,巴德!”;
para.innerHTML=自定义消息;
para.className=“消息”;
容器.儿童(第6段);
});
}
函数测试(回调){
var ref=firebase.database().ref();
参考on(值),功能(快照){
var data=snapshot.val();
回调(数据);
},函数(错误){
日志(“错误:+Error.code”);
});
}
功能搜索消息(数据){
对于(变量i=0;i }
读取操作所需的时间取决于:
var ref = firebase.database().ref();
var query = ref.orderByChild().startAt(firstName).endAt(firstName+"~");
query.once('value', function(snapshot) {
var data = snapshot.val();
callback(data);
这将大大减少传输的数据量。不过需要注意以下几点:
firstName
上定义索引,否则Firebase数据库仍将向客户端发送所有数据,SDK将执行客户端过滤请告诉我们你是如何发明了一种超快无延迟技术的。我们洗耳恭听。你为什么不使用firebase查询API来获取你想要的特定数据?@Darkrum[没有讽刺]我不是要求立即完成。我只是觉得所花费的时间太长,无法如此明显地观察到。因为我是一个新手,我想确认当前的方法是否正确,我是否需要做些其他事情来加快速度。@HayTran好的。让我检查一下。你的意思是通过查询获取数据会减少总体时间吗?你认为呢我认为我当前的代码实现是获取用户数据、基于用户数据进行搜索并返回的正确方式吗?首先,感谢您抽出时间回答我的基本问题。这对我来说意义重大。其次,我将编写一个查询并进行建议的更改。让我在晚上之前回复。第三,我不明白第4点。如果我将db字段更改为全名而不是保留姓名,那么我是否仍需要执行您要求的操作?对于#4,请参阅上的Firebase文档。是的,这始终是确保Firebase在服务器上执行筛选所必需的,这是消除将所有数据发送到客户端的需要的唯一方法。When我使用了“ref.orderByChild('fullName').equalTo(fNameLower)。on('value',gotData,errorData);”,我得到了一个数组(大小为2),其中也包含proto。我如何才能得到匹配的记录?例如,1:{firstName:'olivia',fullName:'olivia parker',lastName:'parker',message:“Teacher”}长度:2 proto:array(0)
proto
只是JavaScript控制台显示对象的一部分。如果您想查看实际的JSON,请执行console.log(JSON.stringify(snapshot.val());