这是我尝试过的。 我尝试了点符号和引号。他们似乎都不起作用。到底是什么问题?
var clientsList;
Client.find({}, function(err, clients) {
clientsList = clients;
// I have 10 clients in the loop
for (var j = 0; j < clientsList.length; j++) {
var x = clientsList[j];
x.count = "20";
//x["count"] = "20";
console.log(x);
}
});
现有客户端对象
{"name":"abcd", "email":"abc@gmail.com"}
我无法将 count 键值对添加到客户端对象中。可能是什么问题?
答案 0 :(得分:0)
我怀疑Client.find
为您提供的对象具有扩展名(它是sealed或frozen)。
您可以使用ES2018传播符号使用原始的自己的可枚举属性以及您的count
属性创建一个 new 对象:
x = {...x, count: "20"};
...或ES2015的Object.assign
:
x = Object.assign({}, x, {count: "20"});
如果数组也被密封或冻结,则可以像这样复制它及其对象:
clientList = clients.map(client => {
return {...client, count: "20"}; // Or with `Object.assign`
});
,甚至使用箭头功能的简洁形式:
clientList = clients.map(client => ({...client, count: "20"}));
旁注:此模式:
var clientsList;
Client.find({}, function(err, clients) {
clientsList = clients;
// ...
});
...通常建议您打算在clientsList
调用之后的代码中使用Client.find
,并希望它具有该调用的回调的结果。请参阅this question's answers,了解为什么这样做不起作用。