Параметр merge: true
объединяет поля, предоставленные в вызове API, с существующими полями в документе.Он не объединяет одно значение с существующим значением поля.
Если вы хотите обновить существующее значение поля, вам сначала нужно будет прочитать значение этого поля, а затем обновить его в своем поле.код и, наконец, записать его обратно в базу данных.
Обычно это делается в транзакции, чтобы никто другой не мог одновременно писать конфликтующие обновления.Пример:
var docRef = Cloud.collection("IPA").doc("Allipas");
Cloud.runTransaction(function(transaction) {
// This code may get re-run multiple times if there are conflicts.
return transaction.get(docRef).then(function(doc) {
if (!doc.exists) {
throw "Document does not exist!";
}
var newIPlist = doc.data().IPlist + "C;";
transaction.update(docRef, { IPList: newIPList });
});
}).then(function() {
console.log("Transaction successfully committed!");
}).catch(function(error) {
console.log("Transaction failed: ", error);
});
Обратите внимание, что Firebase рекомендует не использовать такое составное значение или массивы именно по этой причине: необходимость считывания существующего значения перед его обновлением снижает масштабируемость вашего решения.Посмотрите документацию по работе с массивами, списком и наборами для альтернатив.