From 7f87cff4de336de2101b6b8aa37b687eb94a7047 Mon Sep 17 00:00:00 2001 From: dave Date: Mon, 31 Mar 2025 14:40:28 +0200 Subject: [PATCH] handling of _id in filter --- lib/ws.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/ws.js b/lib/ws.js index c38c031..352c59d 100644 --- a/lib/ws.js +++ b/lib/ws.js @@ -1,8 +1,22 @@ import { WebSocketServer } from 'ws'; +import { ObjectId } from 'mongodb'; let wss; let connections = []; +function replaceIdInFilter (filter) { + if (filter) { + for (const key in filter) { + if (key == '_id' && typeof filter[key] == 'string') { + filter[key] = new ObjectId(filter[key]); + } else if (typeof filter[key] == 'object') { + filter[key] = replaceIdInFilter(filter[key]); + } + } + } + return filter; +} + export function init(cfg, db) { wss = new WebSocketServer(cfg); @@ -21,7 +35,7 @@ export function init(cfg, db) { case "set": db.persist( message.subject, - message.filter, + replaceIdInFilter(message.filter), message.field, message.value );