2011-08-12 9 views
5

node-mongodb-native 드라이버에서 동적 키를 사용할 수있는 방법이 있습니까? 이 말은 변수를 직접 키를 사용하는 대신 키를 유지하는 것을 의미합니다.node-mongodb-native와 함께 동적 키를 사용할 수있는 방법이 있습니까?

하나는 일반적으로이 작업을 수행 할 때와 마찬가지로 :

db.createCollection('col', function(err, col){ 
    col.insert({'_id':'wak3ajakar00'}); 
} 

대신이 작업을 수행합니다 : 나는 후자의 코드를 실행하면

db.createCollection('col', function(err, col){ 
    var ID = '_id'; 
    col.insert({ID:'wak3ajakar00'}); 
} 

, 내가 수집 db.col에서 문서와 끝까지 값이 wak3ajakar00_id 키와 대조적으로 ID이라는 키와 표준으로 생성 된 _id 키가 있습니다. 이것은 실제로 직접이 작업을 수행 할 수 없다고 믿게 만듭니다. 대신

, 지금은 단지 다음과 같이 내가 시간을 미리 삽입 할 문서를 만드는거야 :

db.createCollection('col', function(err, col){ 
    var ID = 'wak3ajakar00'; 
    var key = '_id'; 
    insertion = {} 
    insertion[key] = ID; 
    col.insert(insertion); 
} 

이 정확히 작동 I가 원하는처럼,하지만 난 그냥이 있는지 알고 싶어 이것에 대해 갈 수있는 더 좋은 방법. JavaScript, NodeJS 및 MongoDB는 모두 나에게 새로운 것이므로 쉽게 누락 될 수 있다고 생각합니다. 그렇지 않다면 위의 코드를 JavaScript로 작성하는 더 깨끗한 방법이 있습니까?

보다도, 감사는
사미

+0

[이름으로 변수를 사용하여 JavaScript 개체에 속성을 추가하려면 어떻게합니까?] (http://stackoverflow.com/questions/695050/how-do-i-add-a-property- to-a-javascript-object-a-variable-as-the-name) –

답변

9

객체 리터럴 구문에서, 당신은 키 이름 만 값으로 변수를 사용할 수 없습니다. 이를 수행하는 방법은 이미 발견 한 방법입니다. 먼저 객체를 만든 다음 대괄호 표기법을 사용하여 별도의 단계로 속성을 추가하십시오.

var obj = {}; 
var ID = "_id"; 
obj[ID] = "wak3ajakar00"; 
2

이 기능 OBJ를 호출하는 것은 좋은 아이디어 인 경우

var obj = function(key, value, obj) { 
    obj = obj || {}; 
    obj[key] = value; 
    return obj; 
} 

// Usage 
foo = obj('foo' + 'bar', 'baz'); 
// -> {'foobar': 'baz'} 

foo = obj('stack' + 'over', 'flow', foo); 
// -> {'foobar': 'baz', 'stackover': 'flow'} 

이 몰라 같은 객체를 생성하는 작은 함수를 작성할 수 있습니다.

관련 문제