簡體   English   中英

如何創建列出子文檔長度的mongoose虛擬字段?

[英]How can I create a mongoose virtual field that lists the length of a subdocument?

我有一個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”

因為您要排除tasks ,所以虛擬屬性無法檢查屬性的length (因為它未定義)。

包括tasks ,或包括長度作為模式的預計算值。 你可以在字段上使用$inc來更改長度,因為新項目被添加到任務數組中(或者只是直接設置它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM