这是我使用的数据格式:
ChecksCollection = new Mongo.Collection(null);
ChecksCollection.insert({
oddsChecked: ['', ''],
oddsAverages: ['', ''],
oddsCompeting: ['', ''],
...
dynamicProperty 可以是 'oddsChecked'、'oddsAverages'、'oddsCompeting' 等等。这取决于执行时间。如何使下面的代码正常工作?
var odds = ChecksCollection.findOne().dynamicProperty[index];
最佳答案
您可以使用 transform
使用 Object.defineProperty
创建 setter/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
访问getter 所在的对象。
关于javascript - 如何使属性动态化(在执行代码之前未知)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35056352/