Argument of type '(snap: DataSnapshot) => void' is not assignable to parameter of type '(a: DataSnapshot) => boolean'

后端 未结 2 1052
走了就别回头了
走了就别回头了 2020-12-11 02:24

I\'ve already read several questions and answers about this problem but wasn\'t able to solve it.

I\'m using Ionic2 and I have a method which retrieves data from Fir

2条回答
  •  一个人的身影
    2020-12-11 02:51

    The forEach method in the DataSnapshot has this signature:

    forEach(action: (a: firebase.database.DataSnapshot) => boolean): boolean;
    

    as the action can return true to short-circuit the enumeration and return early. If a falsy value is returned, enumeration continues normally. (This is mentioned in the documentation.)

    To appease the TypeScript compiler, the simplest solution would be to return false (to continue enumerating the child snapshots):

    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;
            });
        });
    

提交回复
热议问题