NodeJS SQLite错误异常

时间:2015-07-12 21:45:38

标签: node.js sqlite http error-handling

我目前正在尝试使用NodeJS创建一个服务器来提供RESTful API,以便将记录插入到SQLite数据库中。虽然我能够检索记录,但我遇到了处理SQLite相关错误(例如唯一约束)的问题:

function insertUser(name, password, response) {
    db.run(insert_stmt, [name, password, new function(err) {
       if (err != null) {
           handleError(err, response);
       }
        else if (response != null) {
            response.writeHead(200, {"Content-Type": "text/plain"});
            response.write("User registered.");
            response.end();
        }
    }, function(err) {
        handleError(err, response);
    });
}

function handleError(err, response) {
    console.log(err.message);
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Registration error.");
    response.end();
}

问题是代码似乎同时触及第二个和第三个函数,因为每当我尝试在handleError方法中创建响应时,响应对象似乎都会关闭。在我的浏览器中,我收到了“用户注册”。消息作为回应。

SQLITE_CONSTRAINT: UNIQUE constraint failed: Users.name, Users.phone_no
events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: write after end
    at ServerResponse.OutgoingMessage.write (_http_outgoing.js:413:15)
    at handleError (/Users/kli/Documents/Node.js/db.js:59:14)
    at Statement.<anonymous> (/Users/kli/Documents/Node.js/db.js:39:3)
    at Statement.replacement (/Users/kli/node_modules/sqlite3/lib/trace.js:20:31)
    at Statement.replacement (/Users/kli/node_modules/sqlite3/lib/trace.js:20:31)

在NodeJS中处理错误的正确方法是什么?我尝试使用process.on('uncaughtException',函数(错误)方法,但我需要响应对象,以便向客户端发送响应,指示已发生的错误。

0 个答案:

没有答案