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