Javascript 使用自定义密钥firebase react native保存数据

Javascript 使用自定义密钥firebase react native保存数据,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,数据库参考: 我试图将数据保存到我的firebase实时数据库,我需要我的密钥是用户ID,而不是随机生成的唯一密钥。我尝试了child,但仍然得到了一些随机密钥。有什么帮助吗?这是我目前使用的方法 async componentWillMount() { const {data} = await Contacts.getContactsAsync({ fields: [Contacts.Fields.PhoneNumbers], }); this.setState({dataSourc

数据库参考:

我试图将数据保存到我的firebase实时数据库,我需要我的密钥是用户ID,而不是随机生成的唯一密钥。我尝试了child,但仍然得到了一些随机密钥。有什么帮助吗?这是我目前使用的方法

async componentWillMount() {


const {data} = await Contacts.getContactsAsync({
  fields: [Contacts.Fields.PhoneNumbers],
});

this.setState({dataSource: data.map(contact => ({...contact, key: contact.number}))});

const contacts = data.filter(d => d.phoneNumbers);

contactsToUpload.forEach(contact => {
  const number = contact.phoneNumbers[0].number.replace(/\D/g, '');
  const ref = firebase.database().ref('/Contacts/' + number);
  try {
    ref.push(contact.name);
  } catch (error) {
    console.log(error);
  }
});
}
//Currently have
"Contacts" : {
  "5554787672" : {
    "-LWIlxwIETK5UR3O5GkR" : "Daniel Higgins Jr.",
    "-LWImsOurEVDOE-KrkVw" : "Daniel From School"
 }
//Needed
"Contacts" : {
 "5554787672" : {
  "UserId1" : "Daniel Higgins Jr.",
  "UserId2" : "Daniel From School"
 }
每次调用push Firebase时,都会生成对数据库中新的唯一位置的引用。所以ref.push在ref.push下创建了一个新的、唯一的位置

如果只想在联系人ID下设置姓名,请更改ref.pushcontact.name;致:


类似的东西对我很有用,我可以根据需要的特殊用户名进行存储。

Hi。谢谢你的回复。多个用户可能会以不同的名称上传相同的号码,我想保留用户ID作为密钥,以及该用户为他命名的值,我认为set将删除前一个密钥,因为在中,我将无法保留用户为该号码提供的不同名称。我不明白您试图实现什么。您能显示两个您想运行的呼叫吗?然后,在这两次通话之后,也将JSON添加为您想要的文本?每个新用户在第一次使用时都会让应用程序运行上面给出的方法,将他们的联系人添加到数据库中,在两个用户在手机上拥有相同号码后,数据库将拥有联系人:{5554787672:{-LWIlxwIETK5UR3O5GkR:Daniel Higgins Jr.-LWImsOurEVDOE KrkVw:Daniel From School}我的理想情况是,我可以通过以下联系人来确定用户上传的内容:{5554787672:{UserID1:Daniel Higgins Jr.,UserID2:Daniel From School}再次感谢您的帮助:联系人:{5554787672:{-LWIlxwIETK5UR3O5GkR:Daniel Higgins Jr.-lwimsourrevdoe KrkVw:Daniel From School}需要:联系人:{5554787672:{UserID1:Daniel Higgins Jr.,UserID2:Daniel From School}请将信息添加到您的问题中,并使用Stack Overflow的格式化工具使其可读。注释中的代码和数据众所周知很难阅读。contactsToUpload是如何填充/初始化的?请注意,如果您共享的是独立的,则最容易提供帮助,因此除您共享的内容外,没有任何外部依赖项。contactsToUpload在componentWillMount主屏幕上,变量contact只是我添加的设备的电话号码Dependencies我想它只是const ref=firebase.database.ref'/Contacts/'+number;试试{ref.setcontact.name;now.the.child在第一行将帮助设置用户列表下的子键
ref.set(contact.name);
db.ref('UsersList/').child('name you want to use').set({
    email:this.state.email,
    fname: this.state.lastname,
    lname: this.state.firstname,
}).then((data)=>{
    //success callback
    alert('success'+data);
}).catch((error)=>{
    //error callback
    alert('failed'+error);
  })