Повторяющиеся записи в БД [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 Повторяющиеся записи в БД [закрыто]

Сообщение Anonymous »

Сейчас я работаю над системой, которая работает уже почти год. У меня есть определенная проблема, которая случается очень редко: в базе данных создаются повторяющиеся записи (pgAdmin 4).
У меня есть несколько проверок на дублирование, которые работают нормально в 99% случаев. в чем может быть проблема?

Сначала я подумал, что это может быть время, необходимое для ответа от моего API регистрации.
Я пробовал использовать другие проверки, такие как идентификатор преимущества, который уникален и должен предотвращать дублирование.
Могу ли я получить некоторую помощь или рекомендации по этому поводу, пожалуйста.
Пожалуйста, проверьте код:

Код: Выделить всё

let benefitsDetails = bh.input.benefit;
let caseData = bh.input.caseData;

function getCurrentDate(): string {
const options: Intl.DateTimeFormatOptions = {
day: '2-digit',
month: '2-digit',
year: 'numeric'
};

const formatter = new Intl.DateTimeFormat('en-US', options);

const currentDate = new Date();
const formattedDateTime = formatter.format(currentDate);

return formattedDateTime;
}
bh.local.duplicateCheckBody = {
'pageSize': 100,
'pageNumber': 0
};

let enquFieldObj = {};

bh.benefit = "";
if (benefitsDetails?.benefitType == "CashBack") {
enquFieldObj['field1'] = bh.input?.policyIdNumber.toString();
bh.benefit = "CashBack"

} else {
enquFieldObj['field1'] = bh.input?.policyIdNumber.toString(); //policyID
enquFieldObj['field4'] = getCurrentDate(); //date
}

enquFieldObj['field2'] = (benefitsDetails as { benefitType?: string })?.benefitType; //benefitType
enquFieldObj['field3'] = (benefitsDetails as { benefitId?: number })?.benefitId?.toString(); //benefitID
bh.local.duplicateCheckBody.enquiryFields = enquFieldObj;

bh.local.duplicateCheckBody.enquiryFields.field2 = enquFieldObj['field2'];
bh.local.duplicateCheckBody.enquiryFields.field3 = enquFieldObj?.['field3'];

bh.local.duplicateCheck = {
'benefitType': bh.local.duplicateCheckBody?.enquiryFields?.field2,
'benefitId': bh.local.duplicateCheckBody?.enquiryFields?.field3?.toString(),
'duplicateStatus': undefined,
}

bh.local.duplciateCheckURL = `${process.env.BASE_URL}${process.env.DUPLICATE_CASE_END_POINT}`;

Код: Выделить всё

bh.local.duplicateCheck.duplicateStatus = false
bh.sameDateError = false

if (bh.local.duplicateCheckResponse.payload.length) {
bh.local.duplicateCheck.duplicateStatus = true
};

if (bh.benefit === 'CashBack') {
bh.local?.duplicateCheckResponse?.payload.sort((a: any, b: any) => {
const dateA = new Date(a.caseData?.data?.Date);
const dateB = new Date(b.caseData?.data?.Date);
return dateB.getTime() - dateA.getTime();
});

let taskStage = bh.local?.duplicateCheckResponse?.payload[0]?.caseData?.data?.searchKeys?.taskStage;

bh.createdDate = bh.local?.duplicateCheckResponse?.payload[0]?.caseData?.data?.Date

const today = new Date();
const currentDate = `${(today.getMonth() + 1).toString().padStart(2, '0')}/${today.getDate().toString().padStart(2, '0')}/${today.getFullYear()}`;

if (currentDate == bh.createdDate) {
bh.sameDateError = true;
}

if (!bh.local?.duplicateCheckResponse?.payload?.length || taskStage == 'Paid' && !bh.sameDateError) {
bh.local.duplicateCheck.duplicateStatus = false;
} else if (taskStage !== 'Paid' && !bh.sameDateError) {
bh.CashBackTaskError = 'Previous CashBack claim is not paid'
bh.local.duplicateCheck.duplicateStatus = true;
} else if (taskStage == 'Paid' && bh.sameDateError) {
bh.local.duplicateCheck.duplicateStatus = true
bh.CashBackTaskError = 'A claim has already been registered with the provided details.'
}

let errorCheck = {
sameDate: bh.sameDateError,
taskStage: taskStage,
CashBackTaskError: bh.CashBackTaskError || '',
benefit: bh.benefit
}

bh.local.duplicateCheck.errorCheck = errorCheck;
}
скриншот из метабазы

Подробнее здесь: https://stackoverflow.com/questions/798 ... ries-in-db
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»