Мне нужно вернуть идентификатор контакта после его сохранения, чтобы сохранить его в моей онлайн-базе данных. Однако метод 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 });
}
Вышеизложенное кажется слишком чрезмерным. Не говоря уже о том, что он может даже не вернуть правильный контакт, поскольку номер телефона может быть не уникальным. (Если кто-то дважды сохраняет контакт с другой информацией)
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);
}
});