我想使用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/

10-16 21:14