【问题标题】:gives same output every time for every request每次请求都给出相同的输出
【发布时间】:2020-08-02 04:52:55
【问题描述】:

我使用 node JS 和 mongo db 制作了一个 API。在那里,我创建了一条使用数据参数获取结果集的路线

这是我创建的路线

router.post('/getmyweeksales', async(req, res) => {

    function remDays(date, days) {
        var result = new Date(date);
        result.setDate(result.getDate() - days);
        console.log(result);

        return result;
    }

    const verified = jwt.verify(req.body.token, process.env.TOKEN_SECRET);
    const date = req.body.currentdate;


    const sales = await Sale.find({
        userID: verified._id,
        saletime: {
            "$gte": remDays(date, 7).toISOString(),"$lt": Date(date)
        }
    }).sort({ saletime: -1 });

    res.send(sales);
});

添加这些日期参数后,它会为我发送的每个请求提供相同的输出。

如果我删除这一行,它会给我每个结果而没有任何错误

saletime: {
                "$gte": remDays(date, 7).toISOString(),"$lt": Date(date)
            }

以下是我每次收到的。

[
    {
        "_id": "5e9b2b320b85d100178a3233",
        "userID": "5e931e4661c5c000170bcdc5",
        "saledata": [
            {
                "_id": "5e9b2b320b85d100178a3235",
                "itemName": "sample item 1",
                "quantity": "1",
                "itemTotal": "123.0"
            },
            {
                "_id": "5e9b2b320b85d100178a3234",
                "itemName": "sample item 3",
                "quantity": "1",
                "itemTotal": "123.0"
            }
        ],
        "total": "246",
        "saletime": "2020-04-18T22:00:40.044Z",
        "__v": 0
    }
]

我怎样才能在 7 天内收到所有结果?

【问题讨论】:

  • 您似乎将第一个日期转换为 toISOString() 而不是第二个日期。这可能是问题吗?
  • 没有问题,我发现问题出在Date(date)。将在下面发布答案

标签: javascript node.js mongodb api mongoose


【解决方案1】:

经过一些研究,我发现问题出在 Date(date) 上,它将日期转换为另一种格式,删除了 Date 并仅使用 "$lt": date 解决了问题。然后必须以与mongodb存储相同的格式发送数据

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2020-12-17
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多