Вот пример того, как указать токен загрузки при загрузке:
const UUID = require("uuid-v4");
const fbId = "<YOUR APP ID>";
const fbKeyFile = "./YOUR_AUTH_FIlE.json";
const gcs = require('@google-cloud/storage')({keyFilename: fbKeyFile});
const bucket = gcs.bucket(`${fbId}.appspot.com`);
var upload = (localFile, remoteFile) => {
let uuid = UUID();
return bucket.upload(localFile, {
destination: remoteFile,
uploadType: "media",
metadata: {
contentType: 'image/png',
metadata: {
firebaseStorageDownloadTokens: uuid
}
}
})
.then((data) => {
let file = data[0];
return Promise.resolve("https://firebasestorage.googleapis.com/v0/b/" + bucket.name + "/o/" + encodeURIComponent(file.name) + "?alt=media&token=" + uuid);
});
}
, а затем позвонить с помощью
upload(localPath, remotePath).then( downloadURL => {
console.log(downloadURL);
});
. Главное, что есть metadata
, вложенных в свойство опции metadata
. Установка firebaseStorageDownloadTokens
в значение uuid-v4 сообщит Cloud Storage, чтобы использовать это как общедоступный токен аутентификации.
Большое спасибо @martemorfosis
Справа от этот самый абзац связан с:
Устанавливать объекты должны быть реализованы с использованием [механизмов], которые в среднем предоставляют время доступа, которое являются сублинейными по количеству элементов в коллекции.
blockquote>Вы найдете то же предложение для Maps , WeakMaps и WeakSets .
Похоже, спецификация ECMA указывает, что реализации (например, Set.prototype.has) должны использовать алгоритм линейного времени (
blockquote>O(n)
).Нет:
Структуры данных, используемые в этой спецификации объектов
Set
, предназначены только для описания требуемой наблюдаемой семантики объектов Set. blockquote>Наблюдаемая семантика в основном связана с предсказуемым порядком итерации (который все еще может быть реализован эффективным и быстрым ). В спецификации предполагается, что реализация использует хеш-таблицу или что-то подобное с постоянным доступом, хотя деревья (с логарифмической степенью доступа) также разрешены.