1
我有以下數據庫結構:AngularFire2 orderByKey和startAt
{
"users" : {
"ap1-AXLKSD9ASLKDJJ0991" : {
"enabled" : true,
"color" : "red"
},
"ap1-A778ASDUASDJ8AS8DA" : {
"enabled" : true,
"color" : "blue"
},
"ap2-ASD88ASD8ASD8HAS8D" : {
"enabled" : true,
"color" : "red"
}
}
}
我試圖讓誰擁有一鍵啓動與「ap1-」的所有用戶,如下所示:
import { Injectable } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class FirebaseService {
//
// Database
userList: FirebaseListObservable<any>;
public constructor(
public afDb: AngularFireDatabase) {
}
getUsers() {
return this.userList = this.afDb.list('/users', {
preserveSnapshot: true,
query: {
orderByKey: true,
startAt: 'ap1-'
}
});
}
}
的上面的代碼會返回ap1和ap2鍵。我在網上搜索,找不到任何方法來實現這一點。
我試着與equalTo ..當我把確切的正確的關鍵,它只發現了這一點。當我放入一個無意義的密鑰時,它什麼也找不到。
好像startAt有bug?
好了,我怎麼就能夠實現結果?必須有一種方法來查找所有以特定字符串開頭或包含特定字符串的密鑰? – flipcode
如果搜索總是相同的,您可以在每個對象上都有一個新值,例如:''ap1-A778ASDUASDJ8AS8DA「:{ 」enabled「:true, 」color「:」blue「,searchPattern:」ap1「 }'然後用'查詢:{ orderByChild:是searchPattern, equalsTo: 'AP1' }' – avilao
或者嘗試是這樣的:https://stackoverflow.com/questions/38618953/how-to-do-一,簡單的搜索功能於字符串中,火力數據庫 – avilao