spl*_*unk 11 firebase ionic-framework firebase-realtime-database ionic2
我已经阅读了关于这个问题的几个问题和答案但是无法解决它.
我正在使用Ionic2,我有一个方法可以从Firebase Database v3中检索数据.我不明白为什么我在控制台中出现以下错误ionic serve:
Error TS2345: Argument of type '(snap: DataSnapshot) => void' is not assignable to parameter of type '(a: DataSnapshot) => boolean'.
Type 'void' is not assignable to type 'boolean'.
Run Code Online (Sandbox Code Playgroud)
这是方法:
constructor(private http: Http) {
firebase.database().ref('users').orderByChild("id").on("value", function(snapshot){
let items = [];
snapshot.forEach(snap => {
items.push({
uid: snap.val().uid,
username: snap.val().username,
});
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
car*_*ant 33
有这个签名的forEach方法DataSnapshot:
forEach(action: (a: firebase.database.DataSnapshot) => boolean): boolean;
Run Code Online (Sandbox Code Playgroud)
因为action可以返回true短路枚举并提前返回.如果返回有价值的值,枚举将继续正常进行.(这在文档中提到.)
要安抚TypeScript编译器,最简单的解决方案是返回false(继续枚举子快照):
database()
.ref("users")
.orderByChild("id")
.on("value", (snapshot) => {
let items = [];
snapshot.forEach((snap) => {
items.push({
uid: snap.val().uid,
username: snap.val().username
});
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2990 次 |
| 最近记录: |