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 );