2015-06-27 5 views
0

Мне нужно вернуть идентификатор контакта после его сохранения, чтобы сохранить его в моей онлайн-базе данных. Однако метод cordova contact.save() не возвращает идентификатор после выполнения.Получение contact.id после сохранения контактного плагина Cordova

Вот моя логика:

if ($scope.contact.id === undefined) { 
 
      contact.save(); 
 
      console.log("Contact ID is:", savedContact.id); 
 
      table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
 
     }

Это не работает.

Есть ли способ, чтобы получить идентификатор для контакта без необходимости поиска в списке контактов телефонов, используя номер телефона, как это:

if ($scope.contact.id === undefined) { 
 
      contact.save(); 
 
      var savedContact = navigator.contacts.find({ "phoneNumbers[0]": phoneNumbers[0].value }); 
 
      console.log("Contact ID is:", savedContact.id); 
 
      table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
 
     }

выше, кажется, как слишком много накладные расходы. Не говоря уже о том, что он может даже не вернуть правильный контакт, поскольку номер телефона может быть не уникальным. (Если кто-то дважды сохраняет контакт с другой информацией)

ответ

1

contact.save() может принимать два обратных вызова, успех и отказ. Обратный вызов должен вернуть вновь сохраненный контакт (который будет включать в себя идентификатор.)

if ($scope.contact.id === undefined) { 
    contact.save(contactSuccess, contactFailure); 
} 

function contactSuccess(newContact) { 
    console.log("Contact ID is:", newContact.id); 
    table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
} 

function contactError(err) { 
    //bb10 fires multiple error callbacks with empty errors 
    if (err) { 
    console.log(err); 
    } 
} 

Так это выглядит, как вы используете Угловое, проверить проект ngCordova. Он предоставляет некоторые интересные обертки вокруг некоторых плагинов, которые делают все более читаемым. Вот соответствующий отрывок из their contacts docs:

$cordovaContacts.save($scope.contactForm).then(function(savedContact) { 
    console.log("Contact ID is:", newContact.id); 
    table.insert({ id: contact.id.value, firstname: name.givenName, lastname: name.familyName, homephone: phoneNumbers[0].value, mobilephone: phoneNumbers[1].value, email: emails[0].value }); 
}, function(err) { 
    if (err) { 
    console.log(err); 
    } 
}); 
+0

Вы мужчина! Я проверю это в следующий час: D –

+0

Если это не сработает, сообщите мне. – laughingpine

+0

Работал как очарование! Спасибо. –

Смежные вопросы