Javascript 获取最新数据时遇到问题';他在nodejs

Javascript 获取最新数据时遇到问题';他在nodejs,javascript,node.js,Javascript,Node.js,我在从MongoDB获取最新数据时遇到了这个问题。每3小时,当我获取最新数据时,我就会将数据推送到MongoDB,因为我面临一个问题 这是模式 var abc = new Schema({ item_name: String, uploadedDate: String, //"6-29-2019" date : Date }); 获取最新数据的 req.body.UPLOADEDATE=“7-2-2019”字符串 我无法找到它为什么给出空数组。请帮我解决这个问题。for

我在从MongoDB获取最新数据时遇到了这个问题。每3小时,当我获取最新数据时,我就会将数据推送到MongoDB,因为我面临一个问题

这是模式

var abc = new Schema({
    item_name: String,
    uploadedDate: String, //"6-29-2019"
    date : Date
});
获取最新数据的 req.body.UPLOADEDATE=“7-2-2019”字符串


我无法找到它为什么给出空数组。请帮我解决这个问题。

for循环中的代码是异步的。 因此,在for循环中的查询运行完毕之前,将发送一个空结果作为响应

在发送响应之前,应该让代码等待查询完成运行

router.post('/todayList', (req, res, next) => {
  abc
    .find({ uploadedDate: { $eq: req.body.uploadedDate } })
    .then(product => {
      let final = funct.duplicate(product, 'item_name')
      var promises = []
      final.forEach((err, documents) => {
        promises.push(
          new Promise((resolve, reject) => {
            if (err) return reject(err)
            abc
              .find({ item_name: comp.item_name, uploadedDate: { $eq: req.body.uploadedDate } })
              .sort({ date: -1 })
              .limit(1)
              .exec((err, docs) => {
                if (err) return reject(err)
                resolve(docs)
              })
          })
        )
      })

      Promise.all(promises).then(result => {
        res.status(200).json({
          data: result
        })
      })
    })
    .catch(err => {
      console.log(err)
      res.status(500).json({
        error: err
      })
    })
})

您是否可以发布一个您试图获取的项目的示例,因为它位于mongo内部,并且您正在发送的实际查询是GN(
req.body.uploadedDate
)。如果数据确实存在,我猜它缺少一个前导的
0
7-02-2019
。这就是为什么使用更具体的类型很有用的原因,即解析
uploadeDate
到日期对象ann中,然后在mongo
date
上进行过滤,这样可以更好地保证数据的有效性
router.post('/todayList', (req, res, next) => {
  abc
    .find({ uploadedDate: { $eq: req.body.uploadedDate } })
    .then(product => {
      let final = funct.duplicate(product, 'item_name')
      var promises = []
      final.forEach((err, documents) => {
        promises.push(
          new Promise((resolve, reject) => {
            if (err) return reject(err)
            abc
              .find({ item_name: comp.item_name, uploadedDate: { $eq: req.body.uploadedDate } })
              .sort({ date: -1 })
              .limit(1)
              .exec((err, docs) => {
                if (err) return reject(err)
                resolve(docs)
              })
          })
        )
      })

      Promise.all(promises).then(result => {
        res.status(200).json({
          data: result
        })
      })
    })
    .catch(err => {
      console.log(err)
      res.status(500).json({
        error: err
      })
    })
})