【发布时间】:2016-11-24 09:32:02
【问题描述】:
我正在使用pg 和node.js。当用户使用auth0 小部件登录时,我将传递它返回的电子邮件并检查我的数据库以查看用户是否存在。如果用户不存在,我将它们插入数据库。我已经设法通过一项功能的黑客工作来解决这个问题,但我希望能得到一些帮助来解决它。
我面临的问题。
-
检查数据库中的电子邮件时,它不是检查整个电子邮件地址。
var emailCheck = "SELECT id from public.user WHERE email=" + req.body.email;req.body.email;实际上是myemail@example.com
返回此错误,
column "myemail" does not exist
虽然
myemail@example.com
确实存在。
-
无论它抛出什么错误,它都会继续插入电子邮件地址。如果它不存在,则将其插入。由于电子邮件上有唯一密钥,因此会引发错误
重复键值违反唯一约束“uk_user_email”
所以要解决这个问题,我的问题是为什么它不在 @ 符号之后检查?我应该遵循什么逻辑来更改此函数以运行第一个查询并且仅在第一个查询未找到相关电子邮件地址时才运行第二个查询?
checkRegister: function(req, res) {
pool.connect(function(err, client, done) {
if (err) {
return console.error('error fetching client from pool', err);
} connection
var emailCheck = "SELECT id from public.user WHERE email=" + req.body.email;
var emailInsert = "insert into public.user (user_auth_level,email,account_locked,contract) " +
"values ('1','" + req.body.email + "','false','false')"
client.query(emailCheck, function(err, result) {
if (err) {
return console.error(err.message);
}
});
client.query(emailInsert, function(err, result) {
if (err) {
return console.error(err.message);
}
});
done();
});
pool.on('error', function(err, client) {
console.error('idle client error', err.message, err.stack)
});
}
【问题讨论】:
标签: node.js postgresql angular node-postgres