gpt4 book ai didi

javascript - 在查询内分配值并且它没有更新

转载 作者:行者123 更新时间:2023-11-29 15:53:00 24 4
gpt4 key购买 nike

我正在尝试根据对数组中 db forEach 值的查询来更新数组“projects”。当我获取该值并将其分配给项目的当前索引时,它不会在实际数组上更新。

我已经尝试过一些解析拒绝 promise 结构、.map、.forEach、普通的 for 循环、查询内的回调,但这些都不起作用。

projects.forEach((project, i) => {
let query = squel
.select()
.field("s.Clave_Proyecto")
.field("s.Semana_Numero")
.field("s.Porcentaje_Semana")
.from("Semana", "s")
.where("s.Clave_Proyecto = ?", project["Clave_Proyecto"])
.toParam();

db.get().query(query.text, query.values, (error, weeks) => {
if(error) return res.status(400).send(error);
if(weeks) project["weeks"] = Object.values(JSON.stringify(weeks));
else project["weeks"] = ["No weeks available"];

projects[i] = project;
console.log(projects[i]);
});
});

它应该以数组形式返回使用新的“weeks”属性更新的项目实例。

最佳答案

每次循环都需要创建一个新的project对象。否则,您将所有数组元素设置为引用同一对象,该对象每次都会被覆盖。

您可以使用Object.assign()将全局对象克隆到局部变量中。

    db.get().query(query.text, query.values, (error, weeks) => {
if(error) return res.status(400).send(error);
let tempProject = Object.assign({}, object);
if(weeks) tempProject["weeks"] = Object.values(JSON.parse(weeks));
else tempProject["weeks"] = ["No weeks available"];

projects[i] = tempProject;
console.log(projects[i]);
});

关于javascript - 在查询内分配值并且它没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com