我正在使用节点mssql包读取快速服务器中的记录集。读回值会按预期输出一组Json对象。
现在我需要修改每个Json对象的Email
propoerty值。所以我尝试循环遍历记录集并更改每个索引的值:
var request = new sql.Request(sql.globalConnection);
request.input('p_email', sql.VarChar(50), userEmail);
request.execute('GetDDMUserProfile', function(err, recordsets, returnValue) {
for (var i = 0; i < recordsets.length; i++){
recordsets[i].Email = "joe@gmail.com";
}
console.log(recordsets);
});
但是,这段代码不是修改每个Json对象的Email
值,而是将新的电子邮件属性附加到最后一个Json对象。
如何将新属性值映射到JSON对象数组?
示例输出 输出的示例如下所示,其中新的Email属性已添加到数组的末尾,而不是更改每个现有的属性值:
[
[
{
ID:[
4
],
UserName:"Brian",
Email:"joe@gmail.com"
},
{
ID:[
5
],
UserName:"Brian",
Email:"joe@gmail.com"
}
Email:'joe@gmail.com' ]
]
答案 0 :(得分:1)
这里的问题是您的数据集似乎不是JSON对象的数组,而是JSON对象数组的数组。如果您确定在最顶层的数组中始终只有一个数组,那么您可以像这样解决问题:
recordsets[0][i].Email = "joe@gmail.com";
始终以最顶层数组中的第一个数组为目标。但是,如果最顶层的阵列可能有多个阵列,那么这将是另一种需要解决的问题。