这是我的DB:
这是我的问题: 1)当我使用下面的代码时,它会将对象返回给我
firebase.database().ref(`/restaurants`).orderByChild('name').equalTo('Good Restaurant').on('value', snap=>{
console.log(snap.val())
})
但是当我将equalTo
的参数更改为${myInput}
时,它将返回null
。
firebase.database().ref(`/restaurants`).orderByChild('name').equalTo(`${this.myInput}`).on('value', snap=>{
console.log(snap.val())
})
2)当我将equalTo
更改为startAt
时,它也会向我null
返回。
firebase.database().ref(`/restaurants`).orderByChild('name').startAt(`${this.myInput}`).on('value', snap=>{
console.log(snap.val())
})
如果你怀疑输入解析有问题,下面是输入的IONIC html代码:
<ion-searchbar
placeholder="Please enter your restaurant Name"
[(ngModel)]="myInput"
[showCancelButton]="shouldShowCancel" (input)="onKeyUp()">
</ion-searchbar>
修改
以下是onKeyUp()
功能的工作原理:
myInput
inputTime
deplayTime = 1000
// as this is typescript, i don have to do "var" or "let"
onKeyUp(){
console.log(this.myInput)
clearTimeout(this.inputTime)
this.inputTime = setTimeout(this.restaurantListing, this.deplayTime);
}
restaurantListing(){
firebase.database().ref(`/restaurants`).orderByChild('name').equalTo(`${this.myInput}`).on('value', snap=>{
console.log(snap.val())
})
}
因此,当我输入&#34; Good&#34;时,console.log(this.myInpit)
执行4次并显示:&#34; G&#34;,&#34; Go&#34;,&#34 ; Goo&#34;,&#34; Good&#34;。 1秒后,它将只开始执行restaurantListing()
。
请提前帮助并表示感谢!
答案 0 :(得分:0)
您不需要在Javascript类中插入变量,除非您想要执行startAt('string ${this.myInput} string')
之类的操作。所以简单地传递变量:
firebase.database().ref(`/restaurants`).orderByChild('name').startAt(this.myInput)
修改强>
我的猜测是NgModel
在onchange
事件触发后更新了输入,因此尝试了console.log()
,但事实并非如此。但是,IONIC看起来像这样 - 首先调用onKeyUp()
然后更新ngModel的值。您还可以使用console.log ngModel事件和keyUp来查看是否获得undefined
。要解决您的错误,请尝试以下操作:
<ion-searchbar
placeholder="Please enter your restaurant Name"
[value]="myInput"
[showCancelButton]="shouldShowCancel" (change)="onKeyUp($event.target.value)">
</ion-searchbar>
和onKeyUp(change) { this.myInput = change }
答案 1 :(得分:0)
试试这个,也许你的这个参考不适合那个上下文
var input = this.myInput;
firebase.database().ref('/restaurants').orderByChild('name').equalTo(input).on('value', snap=>{
console.log(snap.val())
})