2013-08-29 67 views
1

的所有數據更新數據庫,嘗試更新數據庫。jQuery:使用來自ajax-request

對於亞姆在record.names做這樣

從js代碼

var data = { 
    "jobid": $('#jobid').val(), 
    "names": $('#names').val(), 
    "scripttype": $('#testscripts').val() 
}; 
var msg=""; 
for(i = 1; i <=4; i++) { 
    data["Param" + i + "Key"] = $('#key' + i).val(); 
    data["Param" + i + "Value"] = $('#value' + i).val(); 
} 
     $.ajax({ 
      type: 'post', 
      url: "/save", 
      dataType: "json", 
      data: data     
     }); 

在node.js中端

jobsCollection.update({ 
      _id: id 
     }, { 
      $set: { 
       names: record.names,   
       script: record.scripttype, 
       // i dont know what should i place in this part??? 
       // i have to set paramkey and paramValues  
      } 
     }, 
        { 
      upsert: true 
      }, 
     function (err, result) { 
      if (!err) return context.sendJson([], 404); 
     }); 

和record.scripttype得到正確的價值觀。

I don't know how to set values got from the for loop for updating 

request going 

Request: /save 
{ jobid: '', 
    names: 'first', 
    scripttype: 'fow', 
    Param1Key: '1', 
    Param1Value: 'oneeeeee', 
    Param2Key: '2', 
    Param2Value: 'twoooooooo' 
    etc........ 
    ............ 
} 

回答

3

由於屬性名稱是動態的,因此您需要使用JavaScript的索引器樣式屬性訪問器,如下所示。

只是逆轉過程基本上。我不確定數據位於您要撥打update的位置,因此我在下面的示例中將其稱爲sourceData;

// create an object with the well known-property names 
var set = { 
    names : record.names, 
    script : record.scripttype 
}; 

// now loop through the params and set each one individually 
for(i = 1; i <=4; i++) { 
    var key = "Param" + i + "Key"; // build a key string 
    set[key] = sourceData[key];  // grab the data and set it 
    key = "Param" + i + "Value"; // and repeat 
    set[key] = sourceData[key]; 
} 

然後,把它傳遞給你的更新:

jobsCollection.update({ 
      _id: id 
     }, { 
      $set: set   // pass the object created above 
     }, /* etc. */ 

如果你不知道的Params計數,你可以:

  1. 發送
  2. 改用for .. in循環所有屬性

For#2:

for(var key in sourceData) {   
    // you could filter the property names here if you'd like 
    // (like if only Params# were important) 
    set[key] = sourceData[key]; 
}