Моя база данных выглядит следующим образом:firebase веб - обновление базы, где определенное значение найдено
мне нужно обновить division_name
где index_num
равно 3. я попытался следующий код, но он сделал не работает -
var division_index_found="3";
var division_name_given="new div";
var query_update=firebase.database().ref("/divisions")
.orderByChild('index_num').equalTo(division_index_found);
query_update.once("child_added", function(snapshot) {
snapshot.ref.update({ division_name: division_name_given });
});
Какой подход к принятию здесь?
EDIT1: Я получаю предупреждение в хромированной консоли:
FIREBASE ПРЕДУПРЕЖДЕНИЕ: Использование неопределенного индекса. Рассмотрим добавление ".indexOn": "номер_индекса" в/подразделения к вашим правилам безопасности для лучшей производительности
EDIT2: Из firebase базе данных districts
узел выглядит как (?):
"districts" : {
"-KbVYCSO8wrMoXD3vL81" : {
"district_name" : "Rangpur",
"division_index" : "3",
"index_num" : 2
},
"-KbVYHgbWMDMtGsnmvei" : {
"district_name" : "jessore",
"division_index" : "3",
"index_num" : 3
},
"-KbVYKtSnPMFDkx9z0cU" : {
"district_name" : "district 1",
"division_index" : "3",
"index_num" : 4
}
}
сейчас Я хочу обновить district_name
для определенного index_num
и division_index
. Я использую следующий код:
var district_index="3";
var division_index="3"
var district_index_parsed = parseInt(district_index);
var query_update=firebase.database().ref("/districts")
.orderByChild('index_num').equalTo(district_index_parsed);
query_update.once("child_added", function(snapshot) {
snapshot.forEach(function(snapshot_indiv){
if(parseInt(snapshot_indiv.division_index)==parseInt(division_index)){
var district_name_again="new district name";
snapshot_indiv.ref.update({ district_name: district_name_again },function(error){
});
}// end of if division_index compare
});// end of forEach
});// end of query_update once
Но консоль показывает:
Uncaught Error: No index defined for index_num
at je.get (firebase-database.js:94)
...
...
at edit_districts.php:359
...
, которые в конечном счете, намекает на следующей строке кода в моем edit_districts.php
файле:
snapshot.forEach(function(snapshot_indiv){
внутри query_update.once
части Метод forEach
, кажется, создает проблему.
А правила безопасности определяются как
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"divisions": {
".indexOn": "index_num"
},
"districts": {
".indexOn": "index_num"
},
}
}
Как избавиться от ошибок, чтобы обновить базу данных?
Что вы имеете в виду Что происходит? –
@martinjakubik, без изменений найдено в базе данных –
@martinjakubik, 'EDIT1' добавлено в OP –