React-native-contact updateContact正在更新1个联系人的所有电话号码而不是特定号码

时间:2018-04-10 13:41:14

标签: android react-native react-native-android

我们有一个用React-Native编写的移动应用程序,我们使用了本指南中的模块React-native-contact:https://github.com/rt2zz/react-native-contacts

该应用程序的目的是将数字的前缀从XXX更改为YYY。

联系人人口密集,一切正常。但是,我们希望更新联系人的1个特定号码,但不幸的是,它正在更新此联系人的所有号码。我们可以通过以下代码获取联系簿中的联系人列表:

 handleUpdate = () => {
 //phoneContacts => all the contacts found in the address book
 //contactDetails => all the contacts that have the prefix number that needs to be replaced. 
 //prefixNumber => is the prefix number that user wants to replace.
 const { phoneContacts, contactDetails, prefixNumber } = this.state;
 var updated_select = 0;
 var record = null;

  Contacts.getAll( (err, contacts) => {

  _.forEach(contactDetails, (contactD) => {

    if (contactD[1] == true) {

      //where contactD[5] is the specific phone number
       var num = contactD[5];
       num = num.replace(prefixNumber, '010');

      _.forEach(contacts, (cont) => {
         if (cont.recordID === contactD[0])
            //finding the record to be updated in the Contact List
            record = cont;
       });

       //Replacing the record phone numbers with the updated one. 
       record.phoneNumbers[contactD[3]] = { label: contactD[4], number: num };

       //Updating the contacts as per the guide linked above
       Contacts.updateContact(record, (err) => {
         if (err) {
           _alert('error', 'Application error: Update unsuccessful.');
           return;
         }
       });
        ++updated_select;
       }

  });

  ToastAndroid.show(updated_select + ' rows have been updated', ToastAndroid.SHORT);
   this.handleSearchContacts();
   return;
 });
}

所以作为一个具体的例子。我们正在将前缀号码从555更改为010 如果用户X有

phoneNumbers: [
   {label: "work",number: "(555) 555-5555"},
   {label: "mobile",number: "(444) 444-4444"},
  ],

在更新时,应用程序正在将用户X的两个号码更新为:

 phoneNumbers: [
       {label: "work",number: "(010) 555-5555"},
       {label: "work",number: "(010) 555-5555"},
      ],

我们还尝试推送所有值,包括更新的记录,但所有数字都在更新。

在调试过程中,我们验证了变量记录的值,它显示了与所有详细信息的联系,并且具体更新了特定的电话号码。

有什么想法吗?

0 个答案:

没有答案