Hi all,
I have the following bits of code for a bulkInsert into my collection but it keeps returning “undefined”. I’m pretty sure the “events” array is good as I’ve checked it in the console and I can’t see anything odd. It has a length of 409 which is under the 1000 item limit for a bulkInsert too. Weirdly, bulkInsert was working earlier but I must have changed something in the code as it’s seemingly randomly stopped working. Either that or the database is doing something odd that I have no understanding of?
Please note I am not a pro, just trying to improve a local sports club’s website!
This is the function for the bulkInsert:
export function button73_click(event) {
getAllResults()
.then(async (events)=>{
console.log(events)
let options = {
"suppressAuth": true,
"suppressHooks": false
};
let insert = await wixData.bulkInsert('TimeTrialResults', events, options).catch((err)=>{console.log("Insert to database failed: " + err)})
console.log(insert)
})
}
This is the hook that was working earlier but has now stopped (again seemingly random)
function searchForDuplicates(collection, item){
let date = new Date(Date.parse(item.date))
date.setUTCHours(0)
let greaterThan = new Date(date.toString())
let lessThan = new Date(date.setDate(date.getDate()+1))
const checkDate = wixData.query('TimeTrialResults').gt("date", greaterThan).lt("date", lessThan);
const checkEvent = wixData.query(collection).eq("course", item.course);
return checkDate.and(checkEvent).find()
.then((results) =>{
return results.items.length;
})
.catch((err)=>{
console.log(err);
})
}
export function TimeTrialResults_beforeInsert(item, context) {
return searchForDuplicates(context.collectionName, item)
.then((res) =>{
if( res > 0 ){
Promise.reject("Item already exists!")
} else {
return item;
}
})
.catch((err)=>{
console.log(err);
})
}
Finally this is the code that generates the events array from a google sheet
export async function getAllResults() {
try {
const sheetId = await getSecretSheetId();
const range = await getValues(sheetId, 'config!B1');
console.log(`test!${range.data.values[0][0]}`)
const result = await getValues(sheetId, `test!${range.data.values[0][0]}`);
const response = result.data.values;
let event=[];
let events = []
for(let i=1; i < response.length-1; i++){
if (response[i][0]===response[i-1][0]){ //check if the date value is the same (assumes one event per day)
// Matched!
//create an obiect for each result within a matched event
let result = {
date: response[i-1][0],
course: response[i-1][1],
name: response[i-1][3],
time: response[i-1][6],
overall: response[i-1][13],
category: response[i-1][12]
}
event.push(result); //push each result to the event array
} else {
//New Event!
//Create an event obiect and push to eventArray
if(event.length && event[0].date != undefined){
let date = new Date(Date.parse(event[0].date))
date.setUTCHours(18)
let eventObiect = {
results: event,
date: date,
year: date.getFullYear,
course: event[0].course,
}
events.push(eventObiect)
event = []
}
}
}
return events;
} catch (err) {
return Promise.reject(`Get values failed. Info: ${err} `);
}
}