2016-04-19 17 views
0

我有一个简单的数据库,其中包含我的游戏的所有用户的表。我希望用户名和电子邮件地址是唯一的,所以设置它们有唯一的索引。MySql独特索引如何生成适当的响应?

只要为游戏的新用户注册,则执行该语句:

tmpQUERY = "INSERT INTO vertix_users (user_name, user_email, user_pass) " + 
    "VALUES (" + mysql.escape(userName) + 
    ", " + mysql.escape(userEmail) + 
    ", " + mysql.escape(userPass) + ") " + 
    "ON DUPLICATE KEY " + 
    "RETURN 'This username already exists'"; 

我可以做一个简单的INSERT忽略以避免重复的用户名或电子邮件地址。但是我想要做的是为用户产生一些有用的反馈; “这个名字已被采纳。”或“电子邮件已在使用中”。上面的代码是我认为可以工作的一个任意例子。我该如何实现这些目标?

+0

您通常会在您的应用程序中执行此操作,而不是数据库。 –

+0

该查询从Node.js服务器执行。你什么意思?应用程序是否会提出几个请求,以查看名称/电子邮件是否已存在? –

+0

在INSERT IGNORE的节点中使用te affecetd行,如果> 0回显消息http://stackoverflow.com/questions/16199842/find-number-of-rows-in-returned-mysql-result-nodejs – Mihai

回答

1

我认为最简单的解决方案是运行先前的查询来检查名称是否已经存在。注册过程不是一个非常苛刻的过程,因为每个用户只注册一次。所以我认为只用一个查询就可以做到这一点是不值得的。此外,通过单独的“checkUserName”进程,您可以在所有注册表单发送到服务器之前进行检查。例如,一旦用户完成写他想要的用户名。