2013-08-29 11 views
6

更新ステートメントでフィールド名として変数を使用しようとしていますが、これはまったく効果がありません。例えばMongoDBの更新ステートメントで変数を使用する

COLLECTIONNAME.update(
    { _id: this._id }, 
    { $set: { VARIABLE1 : VARIABLE2 } } 
); 

実際のコード:

'blur .editable' : function() { 
     var target = event.currentTarget.value; 
     var field = event.currentTarget.name; 
     field = ' " ' + field + ' " '; 
     Hostings.update({ _id: this._id },{ $set: { field : target } }); 
    } 

答えて

12

あなたは、このようにそれを行うことができます。

'blur .editable' : function() { 
    var target = event.currentTarget.value; 
    var field = event.currentTarget.name; 

    var obj = {}; 
     obj[field] = target; 
    Hostings.update({ _id: this._id },{ $set: obj }); 
} 

Javascripオブジェクトは、次の2つの方法でアクセスすることができます

object.attribute 

または

object["attribute"] 

あなたは第二の方法を使用する場合は、クエリの変数

+0

美しい!私はこの行を削除しなければなりません:field = '"' + field + '"';それは完璧に働いた。本当にありがとう! – glasses

+0

グレート:私はバグを削除する答えを更新しました –

1

でそれにアクセスすることができます
COLLECTIONNAME.update({ _id: this._id },{ $set: { VARIABLE1 : VARIABLE2 } }); MongoDBの変数2の値を取りますが、それは「変数1」を検討しますドキュメント内のフィールドになるようにします。その値は、フィールド名である変数を渡すため

次のように

あなたはjavascriptオブジェクトを作成し、それを使用する必要があります:

var obj={}; 
obj[VARIABLE1] = VARIABLE2; //where VARIABLE1 and VARIABLE2 are getting values from elsewhere earlier 

あなたがこの方法を複数のフィールドを持つようにしたい場合は、ちょうど同じオブジェクトに追加します。

0:

obj[VARIABLE3]= VARIABLE4; 

次にとしての動作を更新しません

関連する問題