gpt4 book ai didi

node.js - promise nodejs + postgresql 中的错误句柄

转载 作者:行者123 更新时间:2023-12-03 08:28:55 25 4
gpt4 key购买 nike

我刚开始学习nodejs 下面是我的代码...
Q1。我是否使用 insertUserPendingBase() 正确处理错误消息? ??
我检查返回消息是否相等 success或不。如果是这样,then 是什么?在这个例子中可以做什么?

Q2。我用 pg当我执行查询时,是否需要做任何事情来防止 SQL 注入(inject)?我在文件中看到没有必要,但我不确定..

欢迎任何可以改进我的代码的建议

路线

var express = require('express');
var router = express.Router();
var co = require('co');

// .. post
var insertUserPendingBase = function(token) {
return new Promise(function (fulfill, reject){
var query = "INSERT INTO user_pending_base (user_pending_email,user_pending_password,token_timestamp,token) VALUES ('" + user_email + "','" + user_password + "', CURRENT_TIMESTAMP,'" + token + "')";
dbClient.query(query, function(err, result) {
if (err) {
reject(err);
} else {
fulfill('success');
}
});
});

// .then(function(value) {
// console.log(value);
// throw "error message";
// }).catch(function(e) {
// console.log(e);
// });
}

co(function *() {
// ...
var insertUserPendingBaseResult = yield insertUserPendingBase(generateTokenResult);

console.log('insertUserPendingBaseResult:'+insertUserPendingBaseResult);
if (insertUserPendingBaseResult == 'success') { // handle error like this ??

}

res.render('Account/Register/Index', {
partials: {
Content: 'Account/Register/Content',
}
});
}).catch(onerror);

function onerror(err) {
console.error(err.stack);
}

更新

如果我改变 fulfill(result)而不是 fulfill('success')我将低于对象,但没有关于失败或成功的消息
{ command: 'INSERT',
rowCount: 1,
oid: 0,
rows: [],
fields: [],
_parsers: [],
RowCtor: null,
rowAsArray: false,
_getTypeParser: [Function] }

更新 2

我找到了使用 try 的方法和 catch里面 co(function *()如下所示,但我不确定这是编写干净代码的最佳方法吗?
co(function *() {
...
try {
var insertUserPendingBaseResult = yield insertUserPendingBase(generateTokenResult);
// if success ...

} catch (err) {
// if fail
console.log(err);
}

最佳答案

无法评论 SQL 注入(inject),但 fulfill('success')必须是 fulfill(result) .

处理promise的成功和失败你应该使用 thencatch ,不需要生成器:

insertUserPendingBase.then(function(result) { /* handle result here */ })
.catch(function(ex) { /* handle exception here */ })

关于node.js - promise nodejs + postgresql 中的错误句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31765370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com