【发布时间】:2018-09-26 04:23:52
【问题描述】:
使用 MEAN Stack 时,我对同一个 URL/路由有三个 GET 请求。一种是对长期情绪进行概括总结,另一种是按输入的日期对情绪进行总结,最后是对与个人情绪条目相关的用户输入标签相关的情绪总结。
我的第一个 GET 请求没有引发任何问题,但第二个 GET 请求引发了错误:无法读取未定义的属性“长度”
错误指向以下行:
48| dateEmotions 中的每种情绪
以下是与错误相关的相关代码:
翡翠
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
GET 请求
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
})
}
});
};
这个问题已经很长了,但是我有另一个指向该 URL 的 GET 请求,它没有抛出任何错误,唯一的区别是我没有在该查询中按日期匹配数据库记录。如果需要,我可以发布工作代码。
编辑
经过一些试验,如果我注释掉另外两条路线,我可以让这三条路线中的每一条都单独运行。当多个路由引入多个请求时会导致问题。比如下面是目前ctrlDashboard.emotionsListByDates工作的路由:
// Dashboard Routes
//router.get(/dashboard', ctrlDashboard.emotionsListGeneralised);
router.get('/dashboard', ctrlDashboard.emotionsListByDates);
//router.get('/dashboard', ctrlDashboard.emotionsListByTag);
如果我注释掉两条路线并让一条运行,并注释掉 Jade 文件中相应的 each emotion in emotions each emotion in dateEmotions 和 each emotion in tagEmotions 块,并且不注释正确的一条,那么这条路线将起作用,似乎是在我触发多条路线时。这是不好的做法,还是不正确的?如果在同一个 URL 上,所有查询都应该在一个 GET 请求中吗?
谢谢。
【问题讨论】:
-
您可能没有与您的查询匹配的文档,因此
dateEmotions保持未定义。 -
该查询在终端的 Mongo shell 中运行并输出正确的结果。
-
虽然与错误无关,但我没有看到您从 mongo 查询中投射
emotion.emotionName、emotion.emotionLevel。你确定你指向的是正确的仪表板玉文件吗? -
哦,是的,那是在早期,当我在 app_server 文件夹中的另一个控制器中有一些虚拟数据时,上面的请求在 app_api 中。例如,将这些更改为emotion.averageHappiness 时,它仍然不起作用。
-
经过一些故障排除和实验后更新了原始帖子。仍然面临问题,但这是一种新的问题。
标签: mongodb mongoose get mean-stack