或 Firebase 中的查询
OR queries in Firebase
我正在尝试构建一个消息系统。我计划收集消息,然后根据发件人和收件人查询消息。为此,我需要查询例如:所有由 Bob 发送并由 Tony 接收的消息以及由 Tony 发送并由 Bob 接收的所有消息。
我不太清楚如何执行此 "or" 语句。
目前我有
MessageRef.once('value', function(dataSnapshot) {
console.log(dataSnapshot.val());
});
其中 return 所有消息。然后我可以做一个 forEach 但它似乎不是很有效。你们有什么建议吗?
此外,您是否认为我构建该消息系统的模型比聊天室好。
谢谢
Firebase 目前只能查询单个子项 属性。所以如果你想查询多个属性,你必须将它们合并为一个:
Messages
-DFHJ3498ua
from: Tony
to: Bob
from_to: Tony_Bob
message: "Hello Bob, this is Tony"
-DFHJ3598uz
from: Bob
to: Tony
from_to: Bob_Tony
message: "Hello Tony, What can I do for you?"
-EFHJ3498ua
from: Tony
to: Bob
from_to: Tony_Bob
message: "Can you help me with this Firebase query?"
然后您可以使用以下方法查询从 Bob 到 Tony 的消息:
var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.orderByChild('from_to').equalTo('Bob_Tony');
query.on('value', function(snapshot) {
console.log(snapshot.val()); // all messages from Bob to Tony
});
在类似聊天的应用程序中,您可能要考虑实际使用发送方-接收方对作为密钥:
Messages
from_Bob_to_Tony
-DFHJ3598uz
from: Bob
to: Tony
message: "Hello Tony, What can I do for you?"
from_Tony_to_Bob
-DFHJ3498ua
from: Tony
to: Bob
message: "Hello Bob, this is Tony"
-EFHJ3498ua
from: Tony
to: Bob
message: "Can you help me with this Firebase query?"
使用此数据结构,您不必 运行 查询来获取相关消息,而是可以直接查找。
var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.child('from_Bob_to_Tony');
query.on('value', function(snapshot) {
console.log(snapshot.val()); // all messages from Bob to Tony
});
我正在尝试构建一个消息系统。我计划收集消息,然后根据发件人和收件人查询消息。为此,我需要查询例如:所有由 Bob 发送并由 Tony 接收的消息以及由 Tony 发送并由 Bob 接收的所有消息。 我不太清楚如何执行此 "or" 语句。 目前我有
MessageRef.once('value', function(dataSnapshot) {
console.log(dataSnapshot.val());
});
其中 return 所有消息。然后我可以做一个 forEach 但它似乎不是很有效。你们有什么建议吗?
此外,您是否认为我构建该消息系统的模型比聊天室好。
谢谢
Firebase 目前只能查询单个子项 属性。所以如果你想查询多个属性,你必须将它们合并为一个:
Messages
-DFHJ3498ua
from: Tony
to: Bob
from_to: Tony_Bob
message: "Hello Bob, this is Tony"
-DFHJ3598uz
from: Bob
to: Tony
from_to: Bob_Tony
message: "Hello Tony, What can I do for you?"
-EFHJ3498ua
from: Tony
to: Bob
from_to: Tony_Bob
message: "Can you help me with this Firebase query?"
然后您可以使用以下方法查询从 Bob 到 Tony 的消息:
var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.orderByChild('from_to').equalTo('Bob_Tony');
query.on('value', function(snapshot) {
console.log(snapshot.val()); // all messages from Bob to Tony
});
在类似聊天的应用程序中,您可能要考虑实际使用发送方-接收方对作为密钥:
Messages
from_Bob_to_Tony
-DFHJ3598uz
from: Bob
to: Tony
message: "Hello Tony, What can I do for you?"
from_Tony_to_Bob
-DFHJ3498ua
from: Tony
to: Bob
message: "Hello Bob, this is Tony"
-EFHJ3498ua
from: Tony
to: Bob
message: "Can you help me with this Firebase query?"
使用此数据结构,您不必 运行 查询来获取相关消息,而是可以直接查找。
var ref = new Firebase('https://your.firebaseio.com/Messages');
var query = ref.child('from_Bob_to_Tony');
query.on('value', function(snapshot) {
console.log(snapshot.val()); // all messages from Bob to Tony
});