diff --git a/frontend/src/lib/strings.js b/frontend/src/lib/strings.js index c0050f4..1d05eab 100644 --- a/frontend/src/lib/strings.js +++ b/frontend/src/lib/strings.js @@ -22,3 +22,10 @@ export function looseJsonIsValid(json) { return false; } } + +export function stringCouldBeID(string) { + if (looseJsonIsValid(string)) { + return false; + } + return /^[a-zA-Z0-9_-]{1,}$/.test(string); +} diff --git a/frontend/src/organisms/connection/collection/find.svelte b/frontend/src/organisms/connection/collection/find.svelte index e0e4136..2b7e6ec 100644 --- a/frontend/src/organisms/connection/collection/find.svelte +++ b/frontend/src/organisms/connection/collection/find.svelte @@ -8,7 +8,7 @@ import { startProgress } from '$lib/progress'; import applicationSettings from '$lib/stores/settings'; import views from '$lib/stores/views'; - import { convertLooseJson } from '$lib/strings'; + import { convertLooseJson, stringCouldBeID } from '$lib/strings'; import { FindItems, RemoveItemById, UpdateFoundDocument } from '$wails/go/app/App'; import { EJSON } from 'bson'; @@ -46,6 +46,10 @@ return; } + if (stringCouldBeID(form.query)) { + form.query = `{ "_id": "${form.query}" }`; + } + querying = `Querying ${collection.key}…`; activePath = []; const newResult = await FindItems(collection.hostKey, collection.dbKey, collection.key, JSON.stringify({ @@ -172,7 +176,7 @@ placeholder={defaults.query} autocomplete="off" spellcheck="false" - use:input={{ type: 'json', autofocus: true }} + use:input bind:this={queryField} bind:value={form.query} />