我想使用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,并检查联系人中是否已经存在。如果存在,则再次生成,否则将其更新为帐号字段中值为空的联系人。
答案 0 :(得分:0)
我认为解决方法是尝试匹配帐号并查看是否有帐号。你可以做类似的事情
const result = await xero.contacts.get({
AccountNumber: crn
});
,然后仅查看返回的联系人数量?如果为零,则可以继续进行,否则将重复,并获得ID。
(我对node.js并不熟悉,所以我的语法可能有点不正确)。
当然,另一种方法是查看您从update()
呼叫中获得的响应,并查看是否为重复的帐号引发了错误,在这种情况下,您可以重新生成帐号并再试一次。我个人不喜欢这种方法,但是如果您可以轻松访问响应,则可能会起作用。再说一次,我不使用node.js,所以我不确定该怎么做。