我有一个node.js REST api路由,它将项目对象作为json减去任务返回:
exports.list = function(req, res) {
return Project.find(null,'-tasks',null,function(err, projects) {
if (!err) {
return res.json(projects);
} else {
return res.send(err);
}
});
};
这适用于列出所有项目但不需要单个任务(100s中的编号)的导航元素。这很好但现在我需要在导航中包含一个任务数量的计数,所以我将其添加到我的模型中:
var ProjectSchema = Schema({
name : String,
tasks : [{
name : String,
state : String }]
},
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
ProjectSchema.virtual("taskCount").get(function(){
return this.tasks.length;
});
但是我收到以下错误:TypeError:无法读取未定义的属性'length'
答案 0 :(得分:1)
由于您要排除tasks
,因此虚拟属性无法检查属性的length
(因为它未定义)。
包含tasks
,或将长度包含为架构的预先计算值。您可以在字段上使用$inc
来更改新项目添加到任务数组中的长度(或直接设置它)。