[英]NodeJS: Verify if sql query was successful
我在 nodejs 中制作了一个非常简单的 api 以将我的 flutter 应用程序与 sqlserver 数据库一起使用,我有疑问。
如果查询成功返回不同的结果,我该如何进行验证?
我正在尝试在成功插入后进行更新,但我不知道如何检查它,有人可以帮助我吗?
这是 api 代码部分:
router.route("/addProduto").post((request, response) => {
CodOS = request.body.CodOs;
CodProduto = request.body.CodProduto;
Qtde = request.body.Qtde;
ValorUnitario = request.body.ValorUnitario;
CodFuncionario = request.body.CodFuncionario;
Sub = request.body.Sub;
Tipo = request.body.Tipo;
Operador = request.body.Operador;
valorantigo = request.body.valorantigo;
Custounit = request.body.Custounit;
dboperations.addProduto(CodOS, CodProduto, Qtde, ValorUnitario, CodFuncionario, Sub, Tipo, Operador, valorantigo, Custounit).then(result => {
console.log(result);
if (result === undefined) {
response.json("ERROR");
}
else {
}
})
})
如您所见,我检查结果是否未定义,但我想这不是最好的方法。
所以这里是查询代码部分:
async function addProduto() {
try {
let pool = await sql.connect(config);
let addProduto = await pool.request()
.input('input_parameter1', sql.Int, CodOS)
.input('input_parameter2', sql.Int, CodProduto)
.input('input_parameter3', sql.Numeric, Qtde)
.input('input_parameter4', sql.Numeric, ValorUnitario)
.input('input_parameter5', sql.Int, CodFuncionario)
.input('input_parameter6', sql.Numeric, Sub)
.input('input_parameter7', sql.Char, Tipo)
.input('input_parameter8', sql.VarChar, Operador)
.input('input_parameter9', sql.Numeric, valorantigo)
.input('input_parameter10', sql.Numeric, Custounit)
.query("INSERT INTO OSProduto (CodOS ,CodProduto ,Qtde ,ValorUnitario ,CodFuncionario ,Sub ,Tipo ,Operador ,valorantigo ,Custounit) VALUES ( @input_parameter1, @input_parameter2, @input_parameter3, @input_parameter4, @input_parameter5, @input_parameter6, @input_parameter7, @input_parameter8, @input_parameter9, @input_parameter10)")
return addProduto.recordsets;
}
catch (error) {
console.log(error);
}
}
您正在使用 node-mssql,对吗?
在这里您可以查看查询结果的文档。
例如,您可以使用rowsAffected
参数检查插入是否成功:
async function addProduto() {
try {
const pool = await sql.connect(config);
const addProduto = await pool.request()
.input('input_parameter1', sql.Int, CodOS)
.input('input_parameter2', sql.Int, CodProduto)
.input('input_parameter3', sql.Numeric, Qtde)
.input('input_parameter4', sql.Numeric, ValorUnitario)
.input('input_parameter5', sql.Int, CodFuncionario)
.input('input_parameter6', sql.Numeric, Sub)
.input('input_parameter7', sql.Char, Tipo)
.input('input_parameter8', sql.VarChar, Operador)
.input('input_parameter9', sql.Numeric, valorantigo)
.input('input_parameter10', sql.Numeric, Custounit)
.query("INSERT INTO OSProduto (CodOS ,CodProduto ,Qtde ,ValorUnitario ,CodFuncionario ,Sub ,Tipo ,Operador ,valorantigo ,Custounit) VALUES ( @input_parameter1, @input_parameter2, @input_parameter3, @input_parameter4, @input_parameter5, @input_parameter6, @input_parameter7, @input_parameter8, @input_parameter9, @input_parameter10)")
if (addProduto.rowsAffected == 0){
throw 'Nothing was inserted!';
}
return addProduto.recordsets;
} catch (error) {
console.log(error);
throw error; // catch error on level above
}
}
例如,您可以通过 Promise catch
捕获错误:
router.route("/addProduto").post((request, response) => {
dboperations.addProduto(request.body)
.then(result => {
console.log(result);
response.json("Ok!");
})
.catch(error => response.json({error}))
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.