Javascript 从SQL获取结果时函数出现故障
当一个现有的SQL记录存在时,我想使用它,而不是添加另一个,但如果它还不存在,我想添加它。我遇到的问题是,当调用我的Node.js应用程序的端点时,它没有以正确的顺序执行,因此在我检查其长度以查看是否需要添加新记录后,将执行SQL查找以查找现有记录Javascript 从SQL获取结果时函数出现故障,javascript,sql,node.js,Javascript,Sql,Node.js,当一个现有的SQL记录存在时,我想使用它,而不是添加另一个,但如果它还不存在,我想添加它。我遇到的问题是,当调用我的Node.js应用程序的端点时,它没有以正确的顺序执行,因此在我检查其长度以查看是否需要添加新记录后,将执行SQL查找以查找现有记录 // it does this second let existingGet = "SELECT * FROM Items WHERE name = '" + productName + "'"; let ex
// it does this second
let existingGet = "SELECT * FROM Items WHERE name = '" + productName + "'";
let existingItem = async () => {
db.query(existingGet, function (err, rows, fields) {
return rows;
});
};
// it does this first
if (await existingItem().length > 0) {
// Existing found, use existing
itemId = existingItem.ID;
} else {
// Item not found, create new
var sql = "INSERT INTO Items (...) VALUES (...)";
await db.query(sql, async function (err, result) {
itemId = existingItem.affectedRows.ID;
});
}
期望的结果是,它在第二部分之前执行第一部分,因为第二部分需要第一部分的结果。尝试删除外括号,以便现有项将从查询中接收结果
//这一秒就完成了
让existingGet=“从name=”+productName+“”的项目中选择*;
//拆下的外支架
让existingItem=async()=>
查询(existingGet,函数(错误、行、字段){
返回行;
});
//它先这样做
如果(等待existingItem().length>0){
//找到现有的,使用现有的
itemId=existingItem.ID;
}否则{
//未找到项目,请创建新项目
var sql=“插入项目(…)值(…)”;
wait db.query(sql,异步函数(err,result){
itemId=existingItem.affectedRows.ID;
});
}
使用sql命令在单个数据库调用中执行此操作
"INSERT INTO Items (...) VALUES (...)
WHERE NOT EXISTS (SELECT 1 FROM Items WHERE name = ...)"
并使用sql命令参数,而不是串联,以避免sql注入。谢谢您的建议。我试过了,但还是坏了。它在得到结果之前检查长度