expressjs中的MongoDB find()查询在第二次运行时返回空结果

时间:2019-03-12 10:02:09

标签: express mongodb-query

我遇到以下问题:

我有一个快递服务器,用作我正在构建的网站的后端/“ API”。

我的/ weekly路线支持2个参数:开始时间和结束时间

如果未提供任何参数,则将生成当天当天的unix时间戳,以及下午1点之前3周的当天的unix时间戳

使用这两个时间戳和数据库对象,我运行此功能:

weeklyimport: async function (db_payload, start, ende) {
db = db_payload
let callection = await db.collection('History').find({$and: [
    {"datumUnix": {$gt: start}}, {"datumUnix": {$lt: ende}}, {"status": 4}, {"bereich": {$ne: "Akquise"}}, {"bereich": {$ne: "Entwicklung"}}, {"bereich": {$ne: "Gewinnung"}}
    ]}).toArray()
return callection
}

首次加载页面时,我将不带参数的页面称为获取21天时间范围内的数据。第一个查询的开始和结束的Console.log(无参数)显示1550530800(开始)和1552382360(结束)。该查询返回〜6800个结果。 在将时间范围更改为相同的开始和结束(这次只是手动操作,这次不是自动进行)之后,开始和结束分别更改为1550530800和1552431599。但是这次我得到一个空数组作为返回值,结果为0。

我跑步时

db.getCollection('History').find({$and: [
        {"datumUnix": {$gt: 1550530800}}, {"datumUnix": {$lt: 1552431599}}, {"status": 4}, {"bereich": {$ne: "Akquise"}}, {"bereich": {$ne: "Entwicklung"}}, {"bereich": {$ne: "Gewinnung"}}
    ]}).count()

在Robo 3T中,我得到了6835个结果,查询结果与之前返回空数组的查询完全相同。该查询的响应时间约为0.248秒,因此不应该是超时问题。

我在每个地方都记录了起点和终点,以确保它们正确传递,而且正确。我最大的问题(除了空数组)是,运行此命令时我什么都没有得到。我在另一个函数中做了几乎相同的操作,并且没有问题。

对于可能导致此问题的任何建议,我们将不胜感激。谢谢您的时间!

1 个答案:

答案 0 :(得分:0)

找到了解决方案-传递给第二个查询的日期被视为字符串,而不是整数。 parseInt()解决了这个问题