我想使用xero-api将MOD10V05有效的Bpay CRN(使用https://github.com/JedWatson/node-bpay生成)分配给xero帐户中的联系人。我能够获取联系人并使用生成的Bpay CRN更新它们。但是我想在更新帐号之前执行检查,以确保不存在重复的帐号。
我试图获取联系人并将映射应用于他们以将没有帐号的联系人的ContactID存储到数组(noAccountNumContacts)。然后映射该数组以更新与Bpay CRN的联系人。但是我无法申请重复检查。
这是代码:
const XeroClient = require("xero-node").AccountingAPIClient;
const bpay = require("bpay");
(async function() {
let xero = new XeroClient(config);
let noAccountNumContacts = [];
const result = await xero.contacts.get();
const contacts = result.Contacts;
// push contact with no account no. to array
contacts.map(contact => {
const { ContactID, Name, AccountNumber } = contact;
console.log("Contact ID: ", ContactID);
console.log("Name: ", Name);
if (AccountNumber === undefined) {
noAccountNumContacts.push(ContactID);
} else {
console.log("Account no: ", AccountNumber);
}
});
console.log("Contacts to be updated ", noAccountNumContacts);
// update account number
if (noAccountNumContacts.length !== 0) {
noAccountNumContacts.map(async contact => {
const crn = bpay.generateBpayCRN(7);
await xero.contacts.update({
ContactID: contact,
AccountNumber: crn
});
});
}
noAccountNumContacts = [];
})();
我想生成一个新的Bpay CRN,并检查联系人中是否已经存在。如果存在,则再次生成,否则将其更新为帐号字段中具有空值的联系人。
最佳答案
我认为这样做的方法是尝试匹配帐号并查看是否有帐号。你能做点什么
const result = await xero.contacts.get({
AccountNumber: crn
});
然后仅查看返回的联系人数量?如果为零,则可以继续进行,否则将有一个重复项,并且您将获得其ID。
(我对node.js并不熟悉,所以我的语法可能有点不正确)。
当然,另一种方法是查看您从
update()
呼叫获得的响应,并查看是否因重复的帐号而引发错误,在这种情况下,您可以重新生成帐号并重试。我个人不喜欢这种方法,但是如果您可以轻松访问响应,则可能会起作用。再说一次,我不使用node.js,所以我不确定该怎么做。关于node.js - 如何在xero中的联系人的帐号字段中执行重复检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57849595/