因此,我目前正在编写清单应用程序,并且在将值插入数据库中时遇到了一些问题。发生的是,我得到了包含有关该特定项目信息的项目对象列表。然后,我将这些项目推送到列表中,并调用一个套接字,该套接字运行for循环以将这些项目插入到我的数据库中,但是当我查看这些项目应位于的表时,它们的所有值都设置为undefined
我的项目对象看起来像这样:
let ItemObject = {
ID: id,Name: name,Qty: qty
}
调用数据库序列的承诺:
export const insertItem = async (list) => {
return new Promise(async (resolve,reject) => {
try {
console.log(list);
for(let i = 0; i < list.length; i++){
const writeSolutionData = `INSERT INTO database (ID,Name,Qty) VALUES ("${list.ID}","${list.Name}","${list.Qty});`;
const response = await db(writeSolutionData,"Inserting Item");
resolve(response);
}
} catch (e) {
console.log("ERROR database.insertItem: " + e);
reject(e);
}
});
};
这是被调用的套接字:
socket.on('insertItem',async (data,callback) => {
try {
const results = await insertItem(data);
callback(true);
}
catch (error) {
callback(false);
}
});
当我在for循环之前控制台记录列表时,我得到了期望的输出,但是在此承诺完成之后,数据库中返回的数据为undefined
。我也没有从回调中收到任何错误。 ES6承诺的想法对我来说仍然是新的,如果我在这里所说的不正确,请原谅我。这是我第一次尝试在这样的异步Promise中实现for循环,所以这在第一次就没有用也就不足为奇了。
如果有人对我在做什么错有任何建议,我将不胜感激。谢谢!