简体   繁体   English

jQuery:使用ajax-request中的所有数据更新数据库

[英]jQuery : update the database with all of the data from the ajax-request

am trying to update database. 我正在尝试更新数据库。

For that iam doing like this 因为我这样做

From js code 来自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                
        });

in node.js side 在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);
        });

in record.names and record.scripttype getting proper values. 在record.names和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........
  ............
 }

Since the property names are dynamic, you'll need to use the indexer-style property accessor of JavaScript as shown below. 由于属性名称是动态的,因此您需要使用JavaScript的索引器样式属性访问器,如下所示。

Just reverse the process basically. 只是基本颠倒过程。 I'm not sure where the data is located at the point you're calling update , so I called it sourceData in the example below; 我不确定数据在您调用update ,所以我在下面的示例sourceData其称为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];
}

then, pass it to your update: 然后,将其传递给您的更新:

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

If you don't know the count of Params , you could: 如果您不知道Params的数量,您可以:

  1. send it 发送
  2. use instead for .. in to loop through all the properties 使用而不是for .. in来遍历所有属性

For #2: 对于#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];
} 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM