From 7323df9a0d57e386638b8a3f1e5971134e3d48c9 Mon Sep 17 00:00:00 2001 From: vi-ssc Date: Tue, 22 Nov 2022 11:37:00 +0000 Subject: [PATCH 1/2] allow searching for null fields via qpm --- src/adapters/datasources/datasource-mongodb.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/adapters/datasources/datasource-mongodb.js b/src/adapters/datasources/datasource-mongodb.js index 71b0f62f..5c0b9dc5 100644 --- a/src/adapters/datasources/datasource-mongodb.js +++ b/src/adapters/datasources/datasource-mongodb.js @@ -8,11 +8,15 @@ const mongodb = require('mongodb') const { MongoClient } = mongodb const { Transform, Writable } = require('stream') const qpm = require('query-params-mongo') -const processQuery = qpm() -// const processQuery = qpm({ -// autoDetect: [{ fieldPattern: /_id$/, dataType: 'objectId' }], -// converters: { objectId: mongodb.ObjectId } -// }) +//const processQuery = qpm(); +const processQuery = qpm({ + autoDetect: [ + { valuePattern: /^null$/i, dataType: 'nullstring' } + ], + converters: { + nullstring: val=>{ return { $type: 10 } } // reference BSON datatypes https://www.mongodb.com/docs/manual/reference/bson-types/ + } +}) const url = process.env.MONGODB_URL || 'mongodb://localhost:27017' const configRoot = require('../../config').hostConfig From 3c2b61015283cccb3a92f231ef3706ba91096a84 Mon Sep 17 00:00:00 2001 From: vi-ssc Date: Tue, 22 Nov 2022 11:37:52 +0000 Subject: [PATCH 2/2] options must overwite the query not otherwise --- src/adapters/datasources/datasource-mongodb.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/adapters/datasources/datasource-mongodb.js b/src/adapters/datasources/datasource-mongodb.js index 5c0b9dc5..148f777d 100644 --- a/src/adapters/datasources/datasource-mongodb.js +++ b/src/adapters/datasources/datasource-mongodb.js @@ -270,7 +270,7 @@ export class DataSourceMongoDb extends DataSource { processOptions (param) { const { options = {}, query = {} } = param - return { ...options, ...processQuery(query) } + return { ...processQuery(query), ...options } // options must overwite the query not otherwise } /**