【发布时间】:2019-12-02 16:00:54
【问题描述】:
我正在使用 POSTMAN 将带有 JSON 对象的 post 请求发送到我的 nodejs express 服务器。
下面是代码:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json()); //need this to get req.body into json
var path = require('path');
var server = require('http').Server(app);
var sqlite = require("better-sqlite3");
var db = new sqlite("bankdatabase.db");
onst createCustomerDBStatement = db.prepare('INSERT INTO customers(firstname, lastname, ssn) VALUES (?, ?, ?)');
app.post('/createaccount', function(req, res){
var successOrFailed = "success";
var createBankAccountRequest = req.body;
console.log(createBankAccountRequest);
var rows = db.prepare(`SELECT * FROM customers WHERE ssn = ${createBankAccountRequest.SSN}`).all();
console.log(rows);
if (rows.length > 0) {
console.log("Customer exists already");
} else {
createCustomerDBStatement.run(createBankAccountRequest.FirstName, createBankAccountRequest.LastName, createBankAccountRequest.SSN);
};
var createBankAccountResponse = {status: successOrFailed, "account number": bankAccountNumber, "customer id": customerID};
res.json(createBankAccountResponse);
});
现在,如果我的 sql 查询有问题,那么我会在命令行控制台和 POSTMAN 应用程序/程序上收到一条错误消息。
如何编写自定义错误消息并在出现错误时执行某些操作?
对于我上面的程序,如果有错误,我想设置var successOrNot = "failed"并将它们发送到我的res.json
另外,当 sql 查询出错时,res.json 似乎没有发送。
我试过了:
const createCustomerDBStatement = db.prepare('INSERT INTO accounts(customerid, accountnumber, accounttype, balance) VALUES (?, ?, ?, ?)', (err) => {
if (err) {
console.log('ERROR!', err);
successOrFailed = "failed";
} else {
successOrFailed = "success";
};
});
但它什么也没做。
【问题讨论】:
-
在您准备好“准备好的声明”后,我看不到任何
stmt.run()或stmt.finalize()电话。 -
@Paulsm4,我在“else”语句下有这个:createCustomerDBStatement.run(createBankAccountRequest.FirstName, createBankAccountRequest.LastName, createBankAccountRequest.SSN);