You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3控制台无法打印MongoDB集合数据,求排查方案

问题排查与解决

你console.log没输出内容,大概率不是log位置的问题(它已经写在axios请求完成、数据赋值之后),更可能是以下几个原因:

1. 过滤条件太严格,无符合数据

你的isRecentlyUpdated只保留15秒内更新的文档,如果接口返回的所有数据updatedAt都超过15秒,过滤后自然是空数组,控制台就没内容输出。

2. updatedAt格式异常,日期转换失败

如果接口返回的updatedAt不是标准日期格式(比如非ISO字符串、时间戳格式错误),new Date(updatedAt)会生成无效日期,updatedTime.getTime()返回NaN,此时Date.now() - NaN也是NaN,NaN < 15000结果为false,所有数据都会被过滤掉。

3. 接口本身返回空数组

可能请求成功了,但后端返回的collection1Response.data本身就是空的,那不管怎么过滤都是空。

排查步骤:

  • 先打印原始数据,确认接口是否返回内容:
    替换当前console.log为:

    console.log('接口返回的原始数据:', collection1Data.value);
    

    查看控制台是否有数据输出。

  • 检查日期转换是否正常:
    在isRecentlyUpdated函数中添加日志:

    const isRecentlyUpdated = (updatedAt) => {
      const updatedTime = new Date(updatedAt);
      console.log('处理的updatedAt:', updatedAt, '转换后的日期:', updatedTime, '时间戳:', updatedTime.getTime());
      return (Date.now() - updatedTime.getTime()) < 15000;
    };
    

    观察输出的日期是否有效,时间戳是否为数字。

  • 临时放宽过滤条件测试:
    把isRecentlyUpdated的返回值改成true,或者将15000改为更大数值(比如86400000,即24小时),看console.log是否有内容。

  • 确认请求无隐藏异常:
    给Promise.all添加错误捕获:

    const fetchData = async () => {
      try {
        const [collection1Response, collection2Response] = await Promise.all([
          axios.get('https://koh-ontvsound:53500/onboardshows'),
          axios.get('https://koh-ontvsound:53500/onboardlands'),
        ]);
        collection1Data.value = collection1Response.data;
        collection2Data.value = collection2Response.data;
        
        console.log(collection1Data.value.filter(data => isRecentlyUpdated(data.updatedAt)));
      } catch (err) {
        console.error('请求出错:', err);
      }
    };
    

内容的提问来源于stack exchange,提问作者Nopmd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:30:49