流星集合中的数字字段名称

时间:2014-02-01 20:37:55

标签: javascript mongodb meteor

我需要实现这样的收集结构:

{
    "_id" : "36JaTS8N9uJDHabaq",
    "pages" : {
        1 : {
            "field1" : "value1",
            "field2" : "value2"
        },
        ...
    }
}

当我做以下事情时,一切都很好:

Collection.insert({
    "pages": {
        1: {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
})

但是当我尝试使用包含数字而不是数字本身的变量时,例如:

var number = 1;
Collection.insert({
    "pages": {
        number: {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
})

我没有收到我想要的结果(有一个变量名称,其中应该是数字):

{
    "_id" : "SjMotZHrtXviuoyqv",
    "pages" : {
        "number" : {
            "field1" : "value1",
            "field2" : "value2"
        }
    }
}

我正在努力实现的目标是什么?

提前致谢!

2 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

var doc={
    pages:{}
};

var number="1";
doc.pages[number]={
    "field1":"value1",
    "field2":"value2"
};

Collection.insert(doc);

答案 1 :(得分:2)

您不能在javascript中将变量用作对象文字中的键。请参阅this回答。

var number = 1;
var pages = {};
pages[number] = {f1: 'v1', f2: 'v2'};
Collection.insert({pages: pages});