I have a client side application that I would like to have the ability to specify arbitrary queries to MongoDB through a server side call to a query function.
I have tried multiple arrangements on both my client and server to try to make this work but I can't seem to figure out the correct way to go about this.
This is an example request that my client would send (although the goal is for the query property to be any valid query that one could hardcode on the server side):
{
"collectionName": "abilities",
"query": "{\"_id\":{\"$in\":[5,{\"$oid\":\"619f97d1d977f089ac559368\"}]}}"
}
On the server side, I've parsed the query with EJSON to try and get it to a state where I can pass it into the db.collection.find() method but the return type is not compatible (I recieve: EJSON.SerilizbleType vs I need: Filter<Document>)
Another thought I had was to stringify the EJSON result and then convert it to JSON through JSON.parse(). If I console.log() the result, I get the following:
{ _id: { '$in': [ 5, '619f97d1d977f089ac559368' ] } }
Passing that into the find() method produces no results.
If I console.log() the parsed text, I receive the following:
{
_id: { '$in': [ new Int32(5), new ObjectId("619f97d1d977f089ac559368") ] }
}
Which shows that the JSON conversion is losing the type, which is important when constructing the query.
Thoughts on how I may go about this?
Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW
Comments
Post a Comment