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

How do I detect if a particular firebase storage path data has changed

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

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

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

我知道我可以通过下面的方式获取它,但是由于我想检测另一个与上传位置不在同一个控制器中的控制器的变化,所以这种方法不起作用。

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

谢谢!!

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

您可以通过将 Firebase 存储与 Firebase 实时数据库相结合来轻松构建它。将文件的下载 URL 保存在数据库中并添加 lastModified 时间戳:

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

每当您 upload/update 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
});