有question (and answer)处理一般情况。我很难将范围变量用作字段键(而不是字段值)
在下面的示例中,所有FULLY_CAPS字段都是范围变量。对于SERVICE和IDENTIFIER,emit在传递给M / R时正确使用了scope变量的值。
但是,当我尝试将范围变量的值用作发出文档中的键时,将使用范围变量名称(而不是其值)创建文档。
return emit({
service: SERVICE,
date: _this.value.date,
identifier: _this.value[IDENTIFIER]
}, {
errors: {
count: 1,
type_breakdown: {
SINGLES_ONLY: {
count: 1
}
}
}
});
有解决这个问题的方法吗?
答案 0 :(得分:2)
使用快捷语法在JavaScript中创建对象时,左侧/属性名称始终被解释为文字值,而不管引号如何。
例如:
var d={ name: "Aaron" }
相当于:
var d={ "name" : "Aaron" }
由于有两种方法可以设置属性值:
obj.propertyName=value
obj["propertName"]=value
您必须使用第二种语法构建对象,至少部分是这样。
var errors={
count: 1,
type_breakdown: { }
}
};
var countObj={ count:1 };
errors.type_breakdown[SINGLES_ONLY]=countObj;
// pass results to emit call