Я пытаюсь использовать функции firebase для обслуживания своей базы данных и хранилища.В основном удалите некоторые старые записи из одного ref / bucket в другой после истечения срока их действия.Часть базы данных прекрасно работает.Однако части хранения не так уж много.Вот как я инициализирую все в своем коде:
var functions = require('firebase-functions');
var admin = require("firebase-admin");
var serviceAccount = require('./my-app-bla-bla.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://my-app.firebaseio.com',
storageBucket: 'gs://my-app.appspot.com'
});
Затем в задании cron, который очищает базу данных и хранилище, у меня есть следующее (это только небольшая соответствующая часть):
const st = admin.storage();
st.bucket("gs://my-app.appspot.com/old-listings/"+listingKey).create(function(error, bucket, apiResponse) {
if (error) {
console.log("Couldn't create an OldListing bucket: " + error.code);
console.log(apiResponse);
} else {
console.log("Created OldListing bucket");
}
});
Этот последний фрагмент кода вызывает ошибку и выдает мне следующий журнал:
Couldn't create an OldListing bucket: 400
{ error:
{ errors: [ [Object] ],
code: 400,
message: 'Invalid bucket name: \'my-app.appspot.com/old-listings/SomeUniqueID\'' } }
Поскольку я запускаю этот код в первый раз, папка old-listings
еще не существует.Поэтому я подумал, что, может быть, мне стоит сначала создать его ведро.Это выдает мне ту же ошибку.
Я также пытался использовать сегменты без ссылки gs, например, st.bucket("old-listings/"+listingKey)
вместо st.bucket("gs://my-app.appspot.com/old-listings/"+listingKey)
.Все равно выдает мне ту же ошибку.
так что именно здесь не хватает?Что я делаю не так?
Редактировать 1
Я попытался добавить следующий фрагмент кода в начале своей функции cron.Чтобы лучше понять, что происходит.
admin.storage().bucket("my-app.appspot.com").exists(function(error, exists) {
if (!error) {
if (exists) {
console.log("Top Bucket Exists");
} else {
console.log("Top Bucket Does Not Exist");
}
} else {
console.log("Top Bucket Error " + error.code);
}
});
admin.storage().bucket("my-app.appspot.com/listings").exists(function(error, exists) {
if (!error) {
if (exists) {
console.log("Listings Bucket Exists");
} else {
console.log("Listings Bucket Does Not Exist");
}
} else {
console.log("Listings Bucket Error " + error.code);
}
});
В моем журнале я получаю следующее:
Top Bucket Exists
Listing Bucket Error undefined
Конечно, у меня уже есть папка с именем listings
в моей базе данных.место хранения.Так почему же второе ведро будет неопределенным?