0

有一个问题(和答案)处理一般情况。我很难使用范围变量作为字段键(而不是字段值)

在下面的示例中,所有 FULLY_CAPS 字段都是范围变量。在 SERVICE 和 IDENTIFIER 的情况下,发出正确地使用范围变量的值,因为它被传递给 M/R。

但是,当我尝试在发出的文档中使用范围变量的值作为键时,文档是使用范围变量名称创建的(而不是它的值)。

return emit({
    service: SERVICE,
    date: _this.value.date,
    identifier: _this.value[IDENTIFIER]
  }, {
    errors: {
      count: 1,
      type_breakdown: {
        SINGLES_ONLY: {
          count: 1
        }
      }
    }
  });

有没有办法解决这个问题?

4

1 回答 1

2

在 JavaScript 中使用快捷语法创建对象时,左侧/属性名称始终被解释为文字值,无论引号如何。

例如:

var d={ name: "Aaron" }

相当于:

var d={ "name" : "Aaron" }

因为有两种方法可以设置属性值:

  1. obj.propertyName=value
  2. obj["propertName"]=value

您必须至少部分地使用第二种语法构造您的对象。

var errors={
      count: 1,
      type_breakdown: { }
      }
    };
var countObj={ count:1 };
errors.type_breakdown[SINGLES_ONLY]=countObj;

// pass results to emit call
于 2013-08-26T10:52:16.420 回答