2016-01-28 52 views
2

這是我使用的數據格式:如何使屬性動態(未知,直到代碼執行)?

ChecksCollection = new Mongo.Collection(null); 
ChecksCollection.insert({ 
    oddsChecked: ['', ''], 
    oddsAverages: ['', ''], 
    oddsCompeting: ['', ''], 
    ... 

dynamicProperty可以 'oddsChecked', 'oddsAverages', 'oddsCompeting' 等。這取決於執行時間。我如何從下面的工作中做出代碼?

var odds = ChecksCollection.findOne().dynamicProperty[index]; 

回答

0

template string

var t = ['oddsChecked', 'oddsAverages', 'oddsCompeting']; 
var s = t[i]; // the `i` determined at the running time. 
var odds = ChecksCollection.findOne({`${s}`: value})...; 
1

試試吧你可以使用transform選項來創建Object.defineProperty一個getter:

ChecksCollection.findOne({}, { 
    transform: doc => Object.defineProperty(doc, 'dynamicProperty', { 
    get: function getDynamicProperty() { 
     // Your logic here 
     // This should return a value (unless you want some obscure 
     // side-effecting getter, which no you don't) 

     if (this.something) { 
     return 42; 
     } 
     else { 
     return 53; 
     } 
    } 
    }) 
); 

您可以訪問吸氣劑是this對象只要你不使用箭頭功能(鎖定this)。

+0

你能不能粘貼一些示例邏輯,以便你的整個片段功能?我很難把我的大腦包裹起來,我試着用它沒有成功。 –