parse-server icon indicating copy to clipboard operation
parse-server copied to clipboard

`new Date()` in aggregation node.js

Open mbfakourii opened this issue 1 year ago • 8 comments
trafficstars

New Issue Checklist

Issue Description

Steps to reproduce

I have an Aggregation in mongo shell that works fine.

image But it doesn't output anything in node.js !

var pipeline = [
    {
        $match: {
            _p_enx: "Entrix$" + req.params[KEY_ENTRIX_ID],
        },
    },
    {
        $lookup: {
            from: "KeyLink",
            let: {
                tempPointer: {
                    $substr: ["$_p_klk", 8, -1],
                },
            },
            pipeline: [
                {
                    $match: {
                        $expr: {
                            $and: [
                                {
                                    $eq: ["$$tempPointer", "$_id"],
                                },
                            ],
                        },
                    },
                },
            ],
            as: "klk",
        },
    },
    {
        $match: {
            $or: [
                {
                    "klk.exp": {
                        $gt: new Date(),
                    },
                },
            ],
        },
    },
];

var query = new Parse.Query(EntrixKeyLink);

let responseAggregation = await query.aggregate(pipeline, {useMasterKey: true});

I think there is a problem in new Date().

Actual Outcome

Nothing is output !

Expected Outcome

It should output like the image above

Environment

Server

  • Parse Server version: 6.3.1 and 7.0.0
  • Operating system: Windows

Database

  • System (MongoDB or Postgres): MongoDB
  • Database version: 7.0.8

Client

  • SDK (iOS, Android, JavaScript, PHP, Unity, etc): API
  • SDK version: n/a

Logs

n/a

mbfakourii avatar May 03 '24 07:05 mbfakourii

Thanks for opening this issue!

  • 🚀 You can help us to fix this issue faster by opening a pull request with a failing test. See our Contribution Guide for how to make a pull request, or read our New Contributor's Guide if this is your first time contributing.

Please test with Parse Server 7, the best would be to add a PR with a failed test. We only fix security bugs in Parse Server 6.

mtrezza avatar May 03 '24 11:05 mtrezza

Please test with Parse Server 7, the best would be to add a PR with a failed test. We only fix security bugs in Parse Server 6.

I tested in Parse Server 7.0.0 and the problem is not solved !

mbfakourii avatar May 03 '24 11:05 mbfakourii

If you remove the date match, then you get the same output on both sides? Did you try { $toDate: new Date() }?

mtrezza avatar May 03 '24 12:05 mtrezza

If you remove the date match, then you get the same output on both sides?

Yes

Did you try { $toDate: new Date() }?

I tried this method as below, but it didn't work !

{
    $match: {
        $or: [
            {
                "klk.exp": {
                    $gt: {$toDate: new Date()},
                },
            },
        ],
    },
},

mbfakourii avatar May 03 '24 17:05 mbfakourii

Could you write a failing test and submit a PR? The pipeline should be as simple as possible.

mtrezza avatar May 03 '24 19:05 mtrezza

Could you write a failing test and submit a PR? The pipeline should be as simple as possible.

What do I expect in this test? what should I compare the pipeline output with?

mbfakourii avatar May 04 '24 05:05 mbfakourii

Just could just add the necessary data to the DB to replicate the issue. You expect the query response to be what it should return.

mtrezza avatar May 04 '24 18:05 mtrezza