Найти тему
ИТ разнообразно

Как я создал приложение для управления продажами с помощью Next.js 13, Typescript и Firebase. Часть 5.

Оглавление

Связь в реальном времени с Firebase: структура данных и работа с CRUD (продолжение)

Коллекция Продукты

После настройки страницы Категории вам необходимо разрешить пользователям добавлять и удалять продукты в любых доступных категориях.

Добавьте описание
Добавьте описание

Создайте страницу Продукты, похожую на изображение выше, и выполните приведённый ниже фрагмент кода, когда пользователь добавляет новый продукт.

export const addProduct = async (name: string, price: number, category: string) => {
try {
await addDoc(collection(db, "products"), {
name, price, category
})
successMessage(`${name} product added! ��`)
} catch (err) {
errorMessage("Error! ❌")
console.error(err)
}
}

Приведённый выше фрагмент кода принимает название продукта, цену и категорию из поля формы и добавляет его в коллекцию Продукты.

Запустите эту функцию для отображения продуктов при загрузке страницы.

export const getProducts = async (setProducts: any) => {
try {
const unsub = onSnapshot(collection(db, "products"), doc => {
const docs: any = []
doc.forEach((d: any) => {
docs.unshift( { ...d.data(), id: d.id })
});
setProducts(docs)
})
} catch (err) {
console.error(err)
setProducts([])
}
}

Наконец, разрешите пользователю удалять продукты из коллекции продуктов. Поэтому выполняйте приведённую ниже функцию, когда пользователь нажимает кнопку удаления.

export const deleteProduct = async (id: string, name:string) => {
try {
await deleteDoc(doc(db, "products", id));
successMessage(`${name} deleted 🎉`)
} catch (err) {
errorMessage("Encountered an error ❌")
console.log(err)
}
}

Функция принимает имя и идентификатор продукта, затем удаляет продукт из коллекции по его идентификатору.

Продолжение следует...

Перевод с некоторыми авторскими заголовками. Автор оригинала: David Asaolu.