Mongodb 无法读取属性';长度';在一个GET请求中未定义的

Mongodb 无法读取属性';长度';在一个GET请求中未定义的,mongodb,mongoose,get,mean-stack,Mongodb,Mongoose,Get,Mean Stack,使用平均堆栈时,我有三个GET请求用于相同的URL/路由。一个是获得长期情绪的概括摘要,另一个是根据输入的日期获得情绪摘要,最后是与用户输入的标签相关联的与个人情绪条目的情绪摘要 我的第一个GET请求没有抛出任何问题,但第二个GET请求抛出一个错误:无法读取未定义的属性“length” 错误指向以下行: 48 | DateMootions中的每种情绪 以下是与错误相关的相关代码: 翡翠 each emotion in dateEmotions .side-emotions-group

使用平均堆栈时,我有三个GET请求用于相同的URL/路由。一个是获得长期情绪的概括摘要,另一个是根据输入的日期获得情绪摘要,最后是与用户输入的标签相关联的与个人情绪条目的情绪摘要

我的第一个GET请求没有抛出任何问题,但第二个GET请求抛出一个错误:无法读取未定义的属性“length”

错误指向以下行:

48 | DateMootions中的每种情绪

以下是与错误相关的相关代码:

翡翠

each emotion in dateEmotions  
    .side-emotions-group
      .side-emotions-label
        p.emotion-left= emotion.emotionName
        p.pull-right(class= emotion.emotionLevel) (#{emotion.emotionLevel}%)
      .side-emotions-emotion.emotion-left
获取请求

module.exports.emotionsListByDates = function (req, res) {
  Emo.aggregate([
    { $match :
        { "date" : { $gte: ISODate("2018-04-09T00:00:00.000Z"), $lt: ISODate("2018-04-13T00:00:00.000Z") } }
    }, { "$group": {
        "_id": null,
        "averageHappiness": {"$avg": "$happiness"},
        "averageSadness": {"$avg": "$sadness"},
        "averageAnger": {"$avg": "$anger"},
        "averageSurprise": {"$avg": "$surprise"},
        "averageContempt": {"$avg": "$contempt"},
        "averageDisgust": {"$avg": "$disgust"},
        "averageFear": {"$avg": "$fear"},
    }}
], function (e, docs) {
    if (e) {
        res.send(e);
    } else {
        res.render('dashboard', {
            title: "ReacTrack - User Dashboard",
            pageHeader: {
                title: "User Dashboard",
                strapline: "View your emotional data here."
            }, 
            dateEmotions: docs
        })
    }
  });
};
这个问题已经很长了,但我有另一个GET请求指向该URL,它没有抛出任何错误,唯一的区别是我没有在该查询中按日期匹配db记录。如果需要,我可以发布工作代码

编辑

module.exports.emotionsListByDates = function (req, res) {
  Emo.aggregate([
    { $match :
        { "date" : { $gte: ISODate("2018-04-09T00:00:00.000Z"), $lt: ISODate("2018-04-13T00:00:00.000Z") } }
    }, { "$group": {
        "_id": null,
        "averageHappiness": {"$avg": "$happiness"},
        "averageSadness": {"$avg": "$sadness"},
        "averageAnger": {"$avg": "$anger"},
        "averageSurprise": {"$avg": "$surprise"},
        "averageContempt": {"$avg": "$contempt"},
        "averageDisgust": {"$avg": "$disgust"},
        "averageFear": {"$avg": "$fear"},
    }}
], function (e, docs) {
    if (e) {
        res.send(e);
    } else {
        res.render('dashboard', {
            title: "ReacTrack - User Dashboard",
            pageHeader: {
                title: "User Dashboard",
                strapline: "View your emotional data here."
            }, 
            dateEmotions: docs
        })
    }
  });
};
经过一些实验,如果我把另外两条注释掉,我就能够让这三条路径中的每一条单独工作。当多个路由拉入多个请求时,会导致问题。例如,
ctrlDashboard.emotionsListByDates
目前正在运行的路线如下:

// Dashboard Routes
//router.get(/dashboard', ctrlDashboard.emotionsListGeneralised);
router.get('/dashboard', ctrlDashboard.emotionsListByDates);
//router.get('/dashboard', ctrlDashboard.emotionsListByTag);
如果我在Jade文件中注释掉两条路径,并保留一条运行路径,注释掉相应的
情感中的每个情感
日期情感中的每个情感
标记情感中的每个情感
块,并保留正确的一条未注释路径,则该路径将工作,似乎是在我发射多条路线的时候。这种做法是错误的还是错误的?如果在同一个URL上,所有查询都应该在一个GET请求中吗


谢谢。

抱歉,这是路由和RESTful API的新手,但在对该主题进行了一些研究之后,我现在明白了错误所在

我假设路由中使用的URL是您希望数据填充的URL…现在仍然是这样,但我认为如果我想填充仪表板页面,我必须使用确切的路由,我没有意识到我可以将数据发布到不同的URL路由,并从这些URL中获取数据来填充一个页面

通过将
/date
/tag
添加到这些路由,并使用AJAX执行这些请求并填充主页来修复


谢谢大家。

我也有同样的问题,但我正在使用React+Redux+Fetch。那么,在同一时间将多个请求从同一页面发送到特定的url,这难道不是一种好的做法吗

我知道是什么导致了这个问题。我发现一些关于它的讨论可能是猫鼬的问题

我的代码:

MymongooObject.find(query_specifiers, function(err, data) { 
  for (let i = 0; i < data.length; ++i) {
  ...
 }
}
MyMongoObject.find(查询说明符,函数(err,数据){
for(设i=0;i
错误:

TypeError:无法读取未定义的属性“length”


您可能没有与查询匹配的文档,因此
dateemotations
保持未定义状态。查询在终端的Mongo shell中工作,并输出正确的结果。虽然与错误无关,但我看不到您从Mongo查询中投射
emotion.emotionName
emotion.emotionLevel
。您确定要插入吗g到右边的仪表盘翡翠文件?哦,是的,那是在早期,当我在app_服务器文件夹中的另一个控制器中有一些虚拟数据时,上面的请求在app_api中。例如,当将这些更改为emotion.averageHappiness时,它仍然无法工作。在一些故障排除和实验之后更新了原始帖子。仍然是fac但这是一种新的问题。