2016-10-04 14 views
5

Tôi đã đọc một số câu hỏi và câu trả lời về vấn đề này nhưng không thể để giải quyết nó.Đối số của loại '(snap: DataSnapshot) => void' không thể gán cho tham số kiểu '(a: DataSnapshot) => boolean'

Tôi đang sử dụng Ionic2 và tôi có phương thức truy xuất dữ liệu từ Cơ sở dữ liệu Firebase v3. Tôi không hiểu lỗi tại sao tôi nhận được sau trong bảng điều khiển khi tôi làm 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'. 

Đây là phương pháp:

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

Trả lời

11

Phương pháp forEach trong DataSnapshot có chữ ký này:

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

làm action có thể trả lại true để rút ngắn bảng liệt kê ion và trở lại sớm. Nếu một giá trị giả bị trả về, thì liệt kê tiếp tục bình thường. (. Đây được đề cập trong documentation)

Để xoa dịu các trình biên dịch nguyên cảo, giải pháp đơn giản nhất sẽ trở false (để tiếp tục liệt kê các bức ảnh chụp trẻ em):

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; 
     }); 
    }); 
Các vấn đề liên quan