我想使用xero-api为xero帐户中的联系人分配一个MOD10V05有效的Bpay CRN(使用https://github.com/JedWatson/node-bpay生成)。我可以获取联系人,并使用生成的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,并检查该CRN是否已存在于联系人中。如果存在,则再次生成,否则将其更新为account number字段中具有空值的联系人。
发布于 2019-09-09 17:20:51
我认为这样做的方法是尝试匹配帐号,看看是否有帐号。你能做像这样的事情吗?
const result = await xero.contacts.get({
AccountNumber: crn
});然后看看返回的联系人数量?如果它是零,你可以继续,否则会有一个副本,你会得到它的ID。
(我不熟悉node.js,所以我的语法可能有点过时)。
当然,另一种方法是查看从update()调用中获得的响应,看看是否为重复的帐号抛出了错误,在这种情况下,您可以重新生成帐号,然后重试。我个人不喜欢这种方法,但如果您可以轻松地访问响应,它可能会起作用。再说一次,我不使用node.js,所以我不确定这是如何完成的。
https://stackoverflow.com/questions/57849595
复制相似问题