Ionic 3, Firebase сохраняет значения в двух базах данных под одним ключом - PullRequest
0 голосов
/ 20 сентября 2018

Я работаю с ионным проектом и использую базы данных в Firebase для хранения данных.Здесь я хочу создать значения в двух базах данных с одним и тем же ключом при вводе нового значения.

Сначала я попытался получить ключ одной базы данных и использовать этот ключ для хранения значения в других базах данных.

this.database.list("/User/").push({
       Username: this.username.value,
       Email: this.email.value,
       Shop: this.shopname.value,
       Contact: this.contact.value
       }).then((data)=>
       console.log(data.key));

this.database.list("/Shops/").push(data.key).set(
         this.shopname.value
      );

Затем я попытался получить ключ и установить его для обоихбазы данных.

let key = this.database.createPushId();

this.database.list("/Shops/").push(key).set(
         this.shopname.value
      );

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

angularfire2: "^5.0.0-rc.11",
firebase : "^4.13.1",
ionic 3

.

1 Ответ

0 голосов
/ 20 сентября 2018

Каждый раз, когда вы звоните push(), вы получаете ссылку на нового ребенка с уникальным идентификатором .Поскольку вы хотите создать два новых дочерних узла с одним и тем же идентификатором, вы должны вызывать push() только один раз.Проще всего отделить вызов push() от кода, который пишет:

var key = firebase.database().ref("/User/").push().key;

Этот вызов фактически ничего не делает в базе данных;он даже не обращается к серверу.Он просто генерирует ключ, который статистически гарантированно будет уникальным.Затем вы можете использовать этот ключ в обеих операциях записи:

firebase.database().ref("/User").child(key).set({
    Username: this.username.value,
    Email: this.email.value,
    Shop: this.shopname.value,
    Contact: this.contact.value
})
firebase.database().ref("/Shops").child(key).set(
    this.shopname.value
);

Выше приведено прямое использование SDK JavaScript вместо AngularFire2.Так как AngularFire2 построен поверх JavaScript SDK, они отлично работают вместе, поэтому все записи, которые вы можете записать в список, могут быть просмотрены выше.

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