Проверьте, существует ли поле, удалите его и создайте новое - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь написать программу NodeJS, которая в данном документе проверяет, существует ли поле из заданного списка полей - скажем, ключ, который мы ищем, - key1.Если поле существует, оно удаляется, и добавляется новое поле с увеличенным полем - key2 с некоторым значением.

// Get the `FieldValue` object
let FieldValue = require('firebase-admin').firestore.FieldValue;

// Create a document reference
let cityRef = db.collection('cities').doc('BJ');

// Remove the 'capital' field from the document
let removeCapital = cityRef.update({
  capital: FieldValue.delete()
});

Из документации я нашел способ удалить поле, но я не уверенкак проверить, существует ли ключ, чтобы программа знала, какой ключ создать после удаления.

Для программы ключом может быть любая последовательность букв, за которой следует последовательность чисел - key1, key2, key3 и т. Д., Поэтому мне нужен способ узнать, какой из них существует, чтобы правильно удалить, а затем увеличить новый

1 Ответ

2 голосов
/ 18 июня 2019

Чтобы узнать список полей для документа, вам нужно получить его методом get(), см. https://firebase.google.com/docs/firestore/query-data/get-data и https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentReference#get

Например:

let cityRef = db.collection('cities').doc('BJ');

cityRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    } else {
        // doc.data() will be undefined in this case
        console.log("No such document!");
    }
}).catch(function(error) {
    console.log("Error getting document:", error);
});

В приведенном выше коде doc является DocumentSnapshot, и если вы вызовете метод data(), он вернет все поля в документе как объект. «

Вам просто нужно перебрать объект, возвращенный методом data(), чтобы получить значение X поля key(X), затем увеличить его и написать новое поле key(X+1), например, с update() метод.


Обратите внимание, что, в зависимости от ваших точных требований, вам может понадобиться Транзакция .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...