Sha*_*ico 5 sql angularjs firebase
我知道WHERE
firebase中没有任何条款.但是我们如何在firebase中实现模式搜索,就像我们在SQL中使用LIKE
operator一样.
我们如何在firebase中实现以下sql查询?
SELECT * FROM Customers WHERE City LIKE 's%';
Run Code Online (Sandbox Code Playgroud)
Abe*_*ins 14
一个近乎解决方案是创建一个数据索引,该索引由City(或您要搜索的其他任何字段)在服务器端NodeJS脚本中编制索引.
这不会完全复制行为LIKE
,但是它允许通过City名称轻松查询,这可以消除对该行为的需要.
这通常通过NodeJS编写的简单服务器端脚本完成.想象一下存储用户数据的场景/users/data
.你的脚本看起来像这样.
var ref = new Firebase("<Your Firebase>.firebaseio.com");
// A Firebase ref where all our users are stored
var userDataRef = ref.child('users/data');
// A Firebase ref which is where we store our index
var byCityRef = ref.child("users/byCity");
// Then bind to users/data so we can index each user as they're added
userDataRef.on("child_added", function (snapshot) {
// Load the user details
var user = snapshot.val();
// Use the snapshot name as an ID (i.e. /users/data/Tim has an ID of "Tim")
var userID = snapshot.name();
// Push the userID into users/byCity/{city}
byCityRef.child(user.city).push(userID);
});
Run Code Online (Sandbox Code Playgroud)
这个脚本将创建一个这样的结构:
{
"users": {
"data": {
"Tim": {"hair": "red", "eyes": "green", "city": "Chicago"}
},
"byCity": {
"Chicago": {
"-asd09u12": "Tim"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我们将数据编入索引,查询它就很简单,只需两个简单的步骤即可完成.
var ref = new Firebase("<Your Firebase>.firebaseio.com");
var userDataRef = ref.child('users/data');
var byCityRef = ref.child('users/byCity')
// Load children of /users/byCity/Chicago
byCityRef.child('Chicago').on("child_added", function (snapshot) {
// Find each user's unique ID
var userID = snapshot.val();
// Then load the User's data from /users/data/{ID}
userDataRef.child(userID).once(function (snapshot) {
// userID = "Tim"
// user = {"hair": "red", "eyes": "green", "city": "Chicago"}
var user = snapshot.val();
});
});
Run Code Online (Sandbox Code Playgroud)
现在,您具有Firebase的近乎实时的加载速度和强大的查询功能!
归档时间: |
|
查看次数: |
1602 次 |
最近记录: |