Bird
Raised Fist0
Supabasecloud~5 mins

Creating storage buckets in Supabase

Choose your learning style10 modes available
Introduction

Storage buckets help you save and organize files like photos or documents in the cloud. They keep your data safe and easy to find.

You want to store user-uploaded images for a website.
You need a place to save backup files automatically.
You want to organize files by project or category.
You need to share files securely with others.
You want to keep logs or reports accessible online.
Syntax
Supabase
const { data, error } = await supabase.storage.createBucket('bucket-name', { public: false })

Use a unique bucket name with no spaces.

The public option controls if files are open to everyone or private.

Examples
This creates a public bucket named 'photos' where anyone can view files.
Supabase
const { data, error } = await supabase.storage.createBucket('photos', { public: true })
This creates a private bucket named 'backups' where files are secure and only accessible by you.
Supabase
const { data, error } = await supabase.storage.createBucket('backups', { public: false })
Sample Program

This code connects to Supabase and creates a private storage bucket called 'user-files'. It prints success or error messages.

Supabase
import { createClient } from '@supabase/supabase-js'

const supabaseUrl = 'https://xyzcompany.supabase.co'
const supabaseKey = 'public-anonymous-key'
const supabase = createClient(supabaseUrl, supabaseKey)

async function createBucket() {
  const { data, error } = await supabase.storage.createBucket('user-files', { public: false })
  if (error) {
    console.log('Error creating bucket:', error.message)
  } else {
    console.log('Bucket created:', data)
  }
}

createBucket()
OutputSuccess
Important Notes

Bucket names must be lowercase and unique within your project.

Private buckets keep files secure but require authentication to access.

Public buckets allow easy sharing but anyone can view the files.

Summary

Storage buckets organize and protect your files in the cloud.

Use createBucket with a name and privacy setting to make a bucket.

Choose public or private based on who should access your files.

Practice

(1/5)
1. What is the main purpose of creating a storage bucket in Supabase?
easy
A. To send emails automatically
B. To run server-side code
C. To create a database table
D. To organize and protect files in the cloud

Solution

  1. Step 1: Understand storage bucket purpose

    A storage bucket is used to hold and organize files securely in the cloud.
  2. Step 2: Compare options

    Options B, C, and D describe other services not related to file storage.
  3. Final Answer:

    To organize and protect files in the cloud -> Option D
  4. Quick Check:

    Storage bucket = organize and protect files [OK]
Hint: Buckets store files safely in the cloud [OK]
Common Mistakes:
  • Confusing buckets with databases
  • Thinking buckets run code
  • Assuming buckets send emails
2. Which is the correct way to create a private storage bucket named photos in Supabase?
easy
A. supabase.storage.createBucket('photos', { access: 'private' })
B. supabase.storage.createBucket('photos', { public: false })
C. supabase.storage.createBucket('photos', { private: true })
D. supabase.storage.createBucket('photos', { isPublic: true })

Solution

  1. Step 1: Recall correct method signature

    The method createBucket takes the bucket name and an options object with a public boolean.
  2. Step 2: Identify correct privacy option

    Setting public: false makes the bucket private. Other options use incorrect keys.
  3. Final Answer:

    supabase.storage.createBucket('photos', { public: false }) -> Option B
  4. Quick Check:

    Use public: false for private bucket [OK]
Hint: Use public: false to make bucket private [OK]
Common Mistakes:
  • Using wrong option keys like isPublic or private
  • Setting public: true for private buckets
  • Confusing access property with public
3. What will be the result of this code snippet?
const { data, error } = await supabase.storage.createBucket('docs', { public: true });
console.log(data);
medium
A. An error because 'public' is not a valid option
B. Undefined because createBucket returns nothing
C. An object with bucket details including name 'docs' and public true
D. A boolean true indicating success

Solution

  1. Step 1: Understand createBucket return value

    The method returns an object with bucket info if successful, including name and public status.
  2. Step 2: Analyze the code output

    Since public: true is valid, data will contain bucket details, not an error or boolean.
  3. Final Answer:

    An object with bucket details including name 'docs' and public true -> Option C
  4. Quick Check:

    createBucket returns bucket info object [OK]
Hint: createBucket returns bucket info object on success [OK]
Common Mistakes:
  • Thinking it returns only true/false
  • Assuming it throws error for public option
  • Expecting no return value
4. You wrote this code but get an error:
await supabase.storage.createBucket('files', { public: 'no' });

What is the likely cause?
medium
A. The 'public' option must be a boolean, not a string
B. Bucket name 'files' is invalid
C. createBucket requires a callback function
D. Missing await keyword before createBucket

Solution

  1. Step 1: Check option types

    The public option expects a boolean true or false, not a string.
  2. Step 2: Identify error cause

    Passing 'no' as a string causes a type error. Bucket name and await usage are correct.
  3. Final Answer:

    The 'public' option must be a boolean, not a string -> Option A
  4. Quick Check:

    public option = boolean, not string [OK]
Hint: Use true/false for public, not strings [OK]
Common Mistakes:
  • Passing 'yes' or 'no' as strings
  • Ignoring await keyword
  • Using invalid bucket names
5. You want to create two buckets: one public named images and one private named backups. Which code correctly does this?
hard
A. await supabase.storage.createBucket('images', { public: true }); await supabase.storage.createBucket('backups', { public: false });
B. await supabase.storage.createBucket('images', { public: false }); await supabase.storage.createBucket('backups', { public: true });
C. await supabase.storage.createBucket('images'); await supabase.storage.createBucket('backups');
D. await supabase.storage.createBucket('images', { access: 'public' }); await supabase.storage.createBucket('backups', { access: 'private' });

Solution

  1. Step 1: Set correct privacy flags

    Public bucket needs public: true, private bucket needs public: false.
  2. Step 2: Verify method calls

    await supabase.storage.createBucket('images', { public: true }); await supabase.storage.createBucket('backups', { public: false }); correctly sets these flags. await supabase.storage.createBucket('images', { public: false }); await supabase.storage.createBucket('backups', { public: true }); reverses them. await supabase.storage.createBucket('images'); await supabase.storage.createBucket('backups'); omits privacy, defaulting to private. await supabase.storage.createBucket('images', { access: 'public' }); await supabase.storage.createBucket('backups', { access: 'private' }); uses invalid keys.
  3. Final Answer:

    await supabase.storage.createBucket('images', { public: true }); await supabase.storage.createBucket('backups', { public: false }); -> Option A
  4. Quick Check:

    Public = true, Private = false [OK]
Hint: Public bucket: public true; Private bucket: public false [OK]
Common Mistakes:
  • Mixing up public true/false
  • Omitting privacy option
  • Using wrong option keys like access
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard