小编The*_*3.0的帖子

Firebase 错误:photoURL 字段必须是有效的 URL

我正在将图像上传到 Firebase 存储,并希望将其图像保存为 Firebase 身份验证中的 photoURL。但是,当我在使用 getsigned URL 后上传图像 URL 时,我收到错误

错误:photoURL 字段必须是有效的 URL。

我知道该 URL 是有效的,因为我已经从控制台输出中检查了它。我尝试过使用decodeURI,甚至研究了firebase-admin-node跟踪的源代码,一直到一个名为 auth-api-requests.ts的文件,该文件在第252行检查名为this的函数中的URL,validator.isURL(request.photoUrl)这让我发现定义函数的文件validator.ts定义了该.isURL()函数的第 152 行,检查是针对禁止字符的字符串执行的。我不想篡改 Firebase 源代码,但我找不到任何解决方案。应该有一种更简单的解决方案,可以将一个 google 函数的返回.getSignedURL()值用作另一个.updateUser({photoURL:}) 的参数,特别是考虑到无法再firebase.getDownloadURL()从 google 云函数节点调用。感谢您为解决此问题提供的任何帮助。

    var downloadURL = "";
   await admin.storage().bucket("gs://****firebase.appspot.com").file(storageRef).getSignedUrl({"action":"read","expires":Date.now() + 500*365*24*3600000}).then((value) => {
        console.log("value after requesting signed URL: " + JSON.stringify(value));
        downloadURL = value;
        return value;
    }).catch((error) => {
        console.log("error perfoming signed URL: " + error);
        return error;
    }) …
Run Code Online (Sandbox Code Playgroud)

javascript google-cloud-storage firebase firebase-authentication google-cloud-functions

5
推荐指数
1
解决办法
2028
查看次数

我如何执行大量的承诺?

我计划在 firebase 上运行大量查询,这些查询可能会增长到数十万甚至数百万的数量级。我一直在使用Promise.all()来解决我的大部分查询,但随着请求的增长Promise.all()似乎只是停止以随机数运行。我研究过使用,Promise.map()但我不确定并发是否能解决问题。感谢您的帮助。

下面是一个简化的示例,您可以看到它似乎只是超时而不会引发任何错误:

var promises = [];
var i = 0;
for(var x = 0; x<1000000; x++){
 const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    i += 1;
    resolve(i);
  }, 10);
});
  promises.push(promise);
}


Promise.all(promises).then((value) => {
  console.log(value)
}).catch((error) => {
  console.log("Error making js node work:" + error);
})
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise es6-promise

4
推荐指数
1
解决办法
4025
查看次数