为什么mongoose承诺。然后在发送res.send数据之前不等待查找查询

时间:2017-11-08 04:09:17

标签: javascript jquery mongodb mongoose promise

我正在尝试将数据发布到数据库。然后在数据库中查询最后3个条目。然后将所有数据发送到ajax / console.log。

但是如果我在第一次点击按钮时清空数据库集合,它会抓取并将数据发布到mongodb集合,但是res.send会在完成之前发送一个空的json数组,因此consolelog为空并且html显示为空白。

(注意:我在第一次按下按钮后检查确保里面有数据:我认为它可能没有抓住最新的现有数据,而不是那些刚被推入收集数据库的数据 ex id3-6而不是id7-9,我一次上传新闻文章3,所以当我测试标题时每次都是重复的。

当我第二次点击它时,它已经在数据库中等待数据,因此,它将加载并显示数据,但不确定为什么承诺不起作用。此决心也在起作用。

const express = require('express');
const {grabArticles} = require('../controller/scrapper.js');
const Article = require('../models/articles');
const Current = require('../models/current');
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
// const Comments = require('../models/comments');

// variables
const router = express.Router();


router.get('/api/fetch', (err, res) => {
  const promiseInfo = new Promise((resolve, reject) => {
    if ( grabArticles() === undefined ) {
      console.log('hurrayyyy');
      resolve();
    } else {
      console.log('oh nooooooo!');
      reject();
    }
  });

  promiseInfo.then(() => {
    Current.find({}, 'topic title', (err, data) => {
    }).limit(3)
      // gives the last three articles saved in current models
      .sort({createdAt: 'desc'})
      .then((data) => {
        res.send({response: data, total: 'Articles were found!'});
        // console.log(data);
    })
  });
});

0 个答案:

没有答案