我有一种需要存储在数据库中的特定格式,而且我几乎就在那里,只是不知道并且找不到解决方案,如何使foreach来存储所有对象,而不仅仅是最后一个。这是仅返回我最后结果的原始代码:
optionDetails.done((data) => {
_.each(data, function(option, key) {
column.config.options_product = {
id: "product_" + key.toString(),
text: option.identifier
};
});
}
我知道可以将其设置为空数组并使用数组存储值,但是格式也将是数组,并且不会保存在数据库中。
所以我应该如何处理,也许将其存储在数组中然后转换为对象。理想的情况是串联:
optionDetails.done((data) => {
_.each(data, function(option, key) {
column.config.options_product += {
id: "product_" + key.toString(),
text: option.identifier
};
});
}
这是我需要的格式:
{id: "product_4", text: "1000003"}
但这不起作用。如果有人知道正确的道路,请分享。谢谢。
答案 0 :(得分:2)
+ =将不连接对象。您需要改为将值添加到特定键。您需要显式添加对象。因此,首先将其转换为数组,然后使用push运算符来推送对象。
即:
column.config.options_product = []
_.each(data, function(option, key) {
column.config.options_product.push({
id: "product_" + key.toString(),
text: option.identifier
};
}));
答案 1 :(得分:1)
如果您要存储{id: "product_4", text: "1000003"}
之类的多个对象,则可以
必须(i)将它们包装成数组;或(ii)为每个密钥提供唯一的密钥,并将其存储在对象中:
选项(i)
column.config.options_product = []
optionDetails.done((data) => {
_.each(data, function(option, key) {
column.config.options_product.push({
id: "product_" + key.toString(),
text: option.identifier
});
});
}
输出:
[
{id: "product_1", text: "foo1"},
{id: "product_2", text: "foo2"},
// (...)
]
选项(ii)
column.config.options_product = {}
optionDetails.done((data) => {
_.each(data, function(option, key) {
column.config.options_product[key] = {
id: "product_" + key.toString(),
text: option.identifier
};
});
}
输出:
{
"0": {id: "product_1", text: "foo1"},
"1": {id: "product_2", text: "foo2"},
// (...)
}