diff --git a/src/db/gpx.ts b/src/db/gpx.ts index 024d740..21f4016 100644 --- a/src/db/gpx.ts +++ b/src/db/gpx.ts @@ -371,9 +371,12 @@ export const getGpx = async (params: any) => { const docs = await getFamily(id, { include_docs: true }); let target: any[]; let gpx: Gpx | undefined = undefined; - docs.rows.forEach((row: any) => { + docs.rows.every((row: any) => { // level 0 if (row.doc.type === 'gpx') { + if (!!gpx) { + return false; // Hack to stop if getFamily fails + } target = [row.doc.doc]; gpx = row.doc.doc; } @@ -394,6 +397,7 @@ export const getGpx = async (params: any) => { appendToArray(target.at(-1), row.doc.type, row.doc._id); target.push(row.doc.doc); } + return true; }); return gpx; }; diff --git a/src/db/lib.ts b/src/db/lib.ts index d216167..23e3736 100644 --- a/src/db/lib.ts +++ b/src/db/lib.ts @@ -46,7 +46,7 @@ export const getFamily = async ( const targetDb = local ? localDb : db; return await targetDb.allDocs({ startkey: key, - endkey: key + '\ufff0', + endkey: `${key}\ufff0`, ...options, }); }; diff --git a/src/db/rte.ts b/src/db/rte.ts index 7493db3..6420f0f 100644 --- a/src/db/rte.ts +++ b/src/db/rte.ts @@ -37,9 +37,12 @@ export const getRte = async (params: any) => { const docs = await getFamily(id, { include_docs: true }); let target: any[]; let rte: Rte | undefined = undefined; - docs.rows.forEach((row: any) => { + docs.rows.every((row: any) => { // level 0 if (row.doc.type === 'rte') { + if (!!rte) { + return false; // Hack to stop if getFamily fails + } target = [row.doc.doc]; rte = row.doc.doc; } @@ -50,6 +53,7 @@ export const getRte = async (params: any) => { appendToArray(target.at(-1), row.doc.type, row.doc.doc); target.push(row.doc.doc); } + return true; }); return rte; }; diff --git a/src/db/trk.ts b/src/db/trk.ts index cc53a43..ece71e2 100644 --- a/src/db/trk.ts +++ b/src/db/trk.ts @@ -37,9 +37,12 @@ export const getTrk = async (params: any) => { const docs = await getFamily(id, { include_docs: true }); let target: any[]; let trk: Trk | undefined = undefined; - docs.rows.forEach((row: any) => { + docs.rows.every((row: any) => { // level 0 if (row.doc.type === 'trk') { + if (!!trk) { + return false; // Hack to stop if getFamily fails + } target = [row.doc.doc]; trk = row.doc.doc; } @@ -49,6 +52,7 @@ export const getTrk = async (params: any) => { appendToArray(target.at(-1), row.doc.type, row.doc._id); target.push(row.doc.doc); } + return true; }); return trk; }; diff --git a/src/db/trkseg.ts b/src/db/trkseg.ts index e0325e7..3d70485 100644 --- a/src/db/trkseg.ts +++ b/src/db/trkseg.ts @@ -32,9 +32,12 @@ export const getTrkseg = async (params: any) => { const docs = await getFamily(id, { include_docs: true }); let target: any[]; let trkseg: Trkseg | undefined = undefined; - docs.rows.forEach((row: any) => { + docs.rows.every((row: any) => { // level 0 if (row.doc.type === 'trkseg') { + if (!!trkseg) { + return false; // Hack to stop if getFamily fails + } target = [row.doc.doc]; trkseg = row.doc.doc; } @@ -45,6 +48,7 @@ export const getTrkseg = async (params: any) => { appendToArray(target.at(-1), row.doc.type, row.doc.doc); target.push(row.doc.doc); } + return true; }); return trkseg; };