2014-11-01 32 views
1

假設我爲正在更新的文檔的屬性生成autoValue。但是,我需要現有文檔的一個(或多個)屬性,在autoValue函數中我無法訪問它們。Meteor - collection2 autoValue - 如何訪問不在修飾符內的其他文檔屬性

例如: 我正在爲文檔生成autoIncrement值。我需要doc.company和doc.date屬性來計算它。但是,我只是更新,讓我們說doc.isFinished屬性。因此,doc.date不能通過this.field()訪問。

非常感謝! :)

+0

給我們一些代碼,分享你的嘗試,指出我們的錯誤。簡單:) – mihai 2014-11-01 14:49:53

+0

我會再試一次:比方說,我有一個文件,有10個領域。我運行 Collection.update(myId,{$ set:{name:'my new name'}); 這個集合有一個名爲「autoincrement」的字段,它有一個autoValue函數分配。但是,通過上面的更新,例如this.field('description')是未定義的(因爲它不在$集合中),即使文檔已經有一個不明確的description屬性。 – Radko 2014-11-13 10:46:40

回答

3

這也正是this.field方法是什麼,但請注意,你應該傳遞field它,doc.field。例如:

YourCollectionSchema = new SimpleSchema({ 
    ... 
    autoIncrement: { 
     type: Number, 
     autoValue: function() { 
      var company = this.field('company').value, 
       data = this.field('data').value; 
      return // WHATEVER YOU NEED TO CALCULATE THE VALUE OF autoIncrement 
     } 
    }, 
    ... 
}); 

顯然,這可能不符合你的要求,但應證明你如何獲得autoValue其他字段的值。如果這種設置不適用於您,請粘貼您的代碼,因爲它對我來說非常合適。

+0

'this.field('yourFieldName')。value'的優點我是否在相關文檔中錯過了這一點? – zipzit 2016-09-07 06:12:56