node.js - 如何在 xero 中的联系人帐号字段中执行重复检查?
问题描述
我想使用 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 并检查联系人中是否已经存在。如果存在,则再次生成,否则将其更新为在帐号字段中具有空值的联系人。
解决方案
我认为这样做的方法是尝试匹配帐号并查看是否存在。你能做类似的事情吗
const result = await xero.contacts.get({
AccountNumber: crn
});
然后只看返回的联系人数量?如果它是零,你可以继续,否则有一个重复,你会得到它的 ID。
(我不熟悉 node.js,所以我的语法可能有点过时)。
当然,另一种方法是查看您从update()
呼叫中获得的响应,并查看是否为重复的帐号引发了错误,在这种情况下您可以重新生成帐号并重试。我个人不喜欢这种方法,但如果您可以轻松访问响应,它可能会起作用。同样,我不使用 node.js,所以我不确定它是如何完成的。
推荐阅读
- graphviz - 如何在系统路径上放置点(graphviz 相关)?
- python - 在 Python 中重塑数据(列表/数组)
- java - 如何反序列化不同格式的日期:YYYY-MM-DD 和 YYYY-MM
- node.js - Node全局npm包,保持最新
- java - 如何检查不同类型的扫描仪字符串拆分
- c++ - 为什么在模板推导过程中没有选择正确的功能
- sql - 从多个表中选择不同的数据
- asp.net-core - 预先批准的 MSA、Google、Facebook、Twitter 帐户的 Easy-auth 白名单
- ember.js - 如何在 Ember 中创建过滤器/搜索下拉列表属性?需要车把语法
- github-pages - 如何使 Nav.Link href 与 gh-pages 一起使用