如何检测特定的firebase存储路径数据是否已更改

时间:2016-07-15 03:37:40

标签: angularjs firebase firebase-storage

firebase数据库有一个功能,当路径中的某些内容发生变化时,我可以再次检索数据

firebase.database().ref('users/' + Auth.uid + '/profileImg').on('value', function(snapshot) { //do things when the data changed});

我想知道是否有人知道firebase存储是否做同样的事情?例如,如果我上传另一张个人资料照片,我该如何才能检索到该图片?

我知道我可以通过以下方式检索它,但由于我想检测另一个控制器中与上传位置不在同一控制器中的更改,因此该方法不起作用。

                        uploadTask.on('state_changed', function (snapshot) {
                        // Observe state change events such as progress, pause, and resume
                        // See below for more detail
                    }, function (error) {
                        // Handle unsuccessful uploads
                    }, function () {
                        $scope.userProfile = uploadTask.snapshot.downloadURL;
                    });
                }, function (error) {
                    console.error(error);
                });

谢谢!

1 个答案:

答案 0 :(得分:2)

Firebase存储没有内置功能,可在文件更改时主动提醒客户端。

通过将Firebase存储与Firebase实时数据库相结合,您可以轻松构建这一功能。保留文件的downloadURL并添加lastModified时间戳:

images
  $imageid
    downloadUrl: "https://downloadUrl"
    lastModified: 123873278327

每当您在Firebase存储中上传/更新图片时,请更新数据库中的downloadUrl / timestamp:

uploadTask.on('state_changed', function (snapshot) {
    // Observe state change events such as progress, pause, and resume
    // See below for more detail
}, function (error) {
    // Handle unsuccessful uploads
}, function () {
    $scope.userProfile = uploadTask.snapshot.downloadURL;
    databaseRef.child('images').child(imageId).set({
        downloadUrl: uploadTask.snapshot.downloadURL,
        lastModified: firebase.database.ServerValue.TIMESTAMP
    })
});

现在,您可以通过侦听该图像的数据库位置来了解图像的修改时间:

databaseRef.child('images').child(imageId).on('value', function(snapshot) {
  // take the downloadUrl from the snapshot and update the UI
});