Получение contact.id после сохранения контактного плагина Cordova

0

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

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

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 });
        }

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

Теги:
cordova
azure-mobile-services

1 ответ

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);   
  }
}

Поскольку похоже, что вы используете Angular, посмотрите проект ngCordova. Он предоставляет некоторые интересные обертки вокруг некоторых плагинов, которые делают все более читаемым. Вот соответствующий отрывок из их контактов:

$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
    Если это не сработает для вас, дайте мне знать.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню