保存 Cordova 联系人插件后获取 contact.id
Getting contact.id after saving Cordova contact plugin
保存后我需要取回联系人 ID,以便将其保存到我的在线数据库中。然而,cordova contact.save() 方法在执行后没有 return id。
这是我的逻辑:
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 });
}
这不起作用。
有没有什么方法可以检索联系人的 ID,而不必像这样使用 phone 号码搜索 phone 的联系人列表:
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 });
}
以上似乎开销太大了。更不用说它甚至可能 return 正确的联系人,因为 phone 号码可能不是唯一的。(如果有人用不同的信息保存联系人两次)
contact.save()
可以接受两次回调,成功和失败。成功回调应该 return 您新保存的联系人(包括 ID。)
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 project. It provides some nice wrappers around some plugins that make everything a bit more readable. Here is the relevant excerpt from 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);
}
});
保存后我需要取回联系人 ID,以便将其保存到我的在线数据库中。然而,cordova contact.save() 方法在执行后没有 return id。
这是我的逻辑:
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 });
}
这不起作用。
有没有什么方法可以检索联系人的 ID,而不必像这样使用 phone 号码搜索 phone 的联系人列表:
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 });
}
以上似乎开销太大了。更不用说它甚至可能 return 正确的联系人,因为 phone 号码可能不是唯一的。(如果有人用不同的信息保存联系人两次)
contact.save()
可以接受两次回调,成功和失败。成功回调应该 return 您新保存的联系人(包括 ID。)
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 project. It provides some nice wrappers around some plugins that make everything a bit more readable. Here is the relevant excerpt from 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);
}
});