Как использовать Firebase Firestore .pu sh () в интерфейсе Javascript - PullRequest
1 голос
/ 04 февраля 2020

Итак, позвольте мне начать с того, что документация Google Firebase ужасна. Я пытаюсь добавить дочерние значения в список, хранящийся в документе в Firestore db, когда пользователь добавляет товар в свою корзину на сайте электронной коммерции. Самая простая вещь (или должна быть). Во всей документации сказано, что нужно использовать .pu sh (), и нет ни одного практического примера того, как это реализовать. Мне недостаточно понять, как его использовать:

// Create a new post reference with an auto-generated id
var newPostRef = postListRef.push();
newPostRef.set({
    // ...
});

Откуда берется postListRef и как мне создать ссылку, которая работает с .pu sh ()? В последние 3 дня я не мог понять, как использовать эту функцию, от получения ссылки на базу данных до добавления значения. Ниже приведены два способа, которыми я пытался его использовать. Это такой глупо простой вопрос, и он сводит меня с ума, что после нескольких часов поиска в Google нигде не было ни одного полного примера. Пожалуйста, предложите полное объяснение с примером кода, который может показаться вам ненужным уровнем детализации о том, как реализовать .pu sh () с firestore в ванильном javascript сценарии переднего конца! Бонусные баллы, если вы можете объяснить, как удалить один элемент из списка.

Ссылки на документацию: https://firebase.google.com/docs/database/web/lists-of-data, https://firebase.google.com/docs/database/admin/save-data

const db = firebase.firestore();
//set with a function that checks to see if user is logged in
var userUid;
//set if the user is not signed in to persist the cart
var guestUid;

function addItemToCart() {
        console.log("Add item to cart triggered..");
        const productName = "Assorted Oranges";
        const productId = "123";

        if (userUid != null) {
            var testRef = firebase.firestore().collection('Carts').doc(userUid).push();
            testRef.set({
            productName: productName,
            productId: productId });
        } else {
            guestUid = getUUID();
            var testRef = db.push({
                productName: productName,
                productId: productId
            });
        }
    }

Независимо от того, как я пытаюсь его использовать, я получаю вариант ошибки: .pu sh () не является функцией, подобной:

product-single:126 Uncaught TypeError: firebase.firestore(...).collection(...).doc(...).push is not a function
    at addItemToCart (product-single:126)

1 Ответ

0 голосов
/ 04 февраля 2020

Метод push() является частью API базы данных Firebase Realtime, а не API Firestore. Хотя обе базы данных являются частью Firebase, они имеют собственный API и несовместимы.

Чтобы добавить документ в коллекцию Firestore , вам нужно сделать что-то вроде:

var testRef = firebase.firestore().collection('Carts').doc(userUid);
testRef.set({
  productName: productName,
  productId: productId 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...