Изменять информацию из-за Ваш пойдите в базе данных firebase

Я нуждаюсь через Javascript посылать информацию в базу данных Firebase, которая будет должна изменять существующую из-за новой информации на основании одного, пойдите или несколько идентификаторов.

Кто-то, кто знал бы, как я могу делать это?

то, что у меня есть до сих пор, так это этот кусок кода, с которым я извлекаю все данные referecia informacionPrincipal и ищу информацию, в которой я нуждаюсь на основании id города.

   var ciudad = $('#ciudad').val();
    var idProvincia = $('#provincia').val();
    var idRegion = $('#region').val();

   infoPrincipal.on("value",function(snapshot){
                        var datos = snapshot.val();
                        console.log(datos);
                        var leng = datos.length;
                        for(var i =0; i< leng; i++){
                            if(datos[i].idCiudad == ciudad){
                                console.log(datos[i]);
                            }

                        }
                    },function(errorObject){
                        console.log(errorObject);
                    })
0
задан 29.12.2016, 00:47
0 ответов

Ты должен иметь в виду, что Firebase - база данных, сходная с базами данных Основной тип Стоимость как Redis, поэтому способ, в котором ты хранишь информацию, зависит многий из способа, в котором ты будешь соглашаться на нее.

Firebase не выставляет API, чтобы реализовывать такие консультации как язык SQL в относительных базах данных, следовательно, если ты хочешь искать информацию из-за идентификации, ты должен впитывать идентификацию в 'Key' или маршрут (path) объекта.

Тогда, если ты хочешь согласиться например на клиентов из-за района, из-за провинции и из-за города ты должен создавать 3 структуры данных.

FIREBASE.child('clientes').child('provincia').child(idProvincia).on("value", loadedByProvinciaCallback);
FIREBASE.child('clientes').child('ciudad').child(idCiudad).on("value", loadedByCiudadCallback);
FIREBASE.child('clientes').child('region').child(idRegion).on("value", loadedByRegionCallback);

Здесь ощутись, что я использую child корень названный 'клиентами' внутри этого child, я думаю 3 childs, что для моего способа соглашаться на информацию они подают меня как 3 контекста внутри 'клиент', контекст для провинции, одного для города и другого для района, таким образом определяю мой способ соглашаться на informacioón.

Ты скажешь, что это ломает начала, удвоив информацию, и это эта хорошо это не реляционная база данных - база данных NoSQL и самое важное в Firebase состоит в том, что это база данных в реальном времени, реализовывать этот тип баз данных в реальном времени и масштабируемые как Firebase сложные, сейчас ты можешь использовать сделки в момент agreagr новый клиент в твоей базе данных, чтобы это добавлять в 3 контекстах (район, провинция, город) этой формы уверяешь, что информация консистентная.

В твоем случае ты реализуешь линейные поиски внутри array, хранившегося в ref Firebase, должен принимать во внимание, что у этого типа поисков есть наихудший результат, так что, если array очень большой, тогда у тебя будет серьезная проблема скрытости.

В конце концов, как только ты нашел snapshot, как твой критерий поисков, ты должен получать ссылку этого, чтобы мочь изменять это, snapshot предоставляет функцию snapshot.ref (), что возвращает тебе ссылку на выражение snapshot.

function(snapshot){
    var datos = snapshot.val();

    for(var i =0; i< datos.length; i++){
        if(datos[i].idCiudad == ciudad){ // aqui filtras el snapshot a editar
            console.log(datos[i]);
            var refModifcar = snapshot.ref(); // obtienes el ref del snapshot a editar

            refModifcar.set({...}); // aqui editas el snapshot
        }
    }
}

Документация Firebase на как манипулировать informacioón.

Firebase read and write

1
ответ дан 03.12.2019, 17:56
  • 1
    я понимаю, очень хорошо, думаю, что я такой привыкаю к основанию относительных данных, думаю, что я буду должен изучать или искать что-то в облаке, но как mysql, спасибо за помощь –  05.01.2017, 14:43