diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 29ec2af73..da193a886 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -490,7 +490,11 @@ function getSelectedDataJson(forceArray = false) { const cells = cellsToRegularCells(selectedCells); - const data = cells.map(cell => grider.getRowData(cell[0])[realColumnUniqueNames[cell[1]]]); + const data = cells.map(cell => { + const rowData = grider.getRowData(cell[0]); + if (!rowData) return null; + return rowData[realColumnUniqueNames[cell[1]]]; + }); if (!data.every(x => _.isArray(x) || _.isPlainObject(x))) return null; if (data.length == 0) return null; if (data.length == 1 && _.isPlainObject(data[0]) && !forceArray) return data[0]; diff --git a/packages/web/src/modals/ConfirmNoSqlModal.svelte b/packages/web/src/modals/ConfirmNoSqlModal.svelte index 473e674ff..ec0acf0d6 100644 --- a/packages/web/src/modals/ConfirmNoSqlModal.svelte +++ b/packages/web/src/modals/ConfirmNoSqlModal.svelte @@ -4,6 +4,7 @@ import FormSubmit from '../forms/FormSubmit.svelte'; import JSONTree from '../jsontree/JSONTree.svelte'; import AceEditor from '../query/AceEditor.svelte'; +import newQuery from '../query/newQuery'; import ModalBase from './ModalBase.svelte'; import { closeCurrentModal } from './modalTools'; @@ -29,6 +30,17 @@ }} /> + { + newQuery({ + initialData: script, + }); + + closeCurrentModal(); + }} + /> diff --git a/plugins/dbgate-plugin-mongo/src/backend/driver.js b/plugins/dbgate-plugin-mongo/src/backend/driver.js index 7a91af6c5..25fa56eb9 100644 --- a/plugins/dbgate-plugin-mongo/src/backend/driver.js +++ b/plugins/dbgate-plugin-mongo/src/backend/driver.js @@ -21,7 +21,9 @@ const mongoIdRegex = /^[0-9a-f]{24}$/; function convertConditionInternal(condition) { if (condition && _.isString(condition._id) && condition._id.match(mongoIdRegex)) { return { - _id: ObjectId(condition._id), + _id: { + $in: [condition._id, ObjectId(condition._id)], + }, }; } return condition; diff --git a/plugins/dbgate-plugin-mongo/src/frontend/driver.js b/plugins/dbgate-plugin-mongo/src/frontend/driver.js index 431574953..edf10f2a2 100644 --- a/plugins/dbgate-plugin-mongo/src/frontend/driver.js +++ b/plugins/dbgate-plugin-mongo/src/frontend/driver.js @@ -7,7 +7,7 @@ const mongoIdRegex = /^[0-9a-f]{24}$/; function getConditionPreview(condition) { if (condition && _isString(condition._id) && condition._id.match(mongoIdRegex)) { - return `{ _id: ObjectId('${condition._id}') }`; + return `{ _id: { $in: ['${condition._id}', ObjectId('${condition._id}')] } }`; } return JSON.stringify(condition); }