[英]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.