2016-04-19 3 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は、ユーザー名やメールアドレスの重複を避けるために、IGNORE行うだけのことができます。しかし、私がやりたいことは、ユーザーにとって役に立つフィードバックを生成することです。 「この名前は取られている」または「Eメールはすでに使用中です。上記のコードは、私がうまくいくと思ったものの任意の例です。これらの行に沿って何かを達成するにはどうすればいいですか?

+0

通常、これはデータベースではなくアプリケーションで行います。 –

+0

このクエリはNode.jsサーバーから実行されます。どういう意味ですか?アプリは、名前/電子メールがすでに存在するかどうかを確認するいくつかのリクエストを行う必要がありますか? –

+0

> 0がメッセージをエコーアウトすると、INSERT IGNOREを持つノードのaffecetd行を使用します。http://stackoverflow.com/questions/16199842/find-number-of-rows-in-returned-mysql-result-nodejs – Mihai

答えて

1

名前が既に存在するかどうかを確認するために前のクエリを実行するのが最も簡単な解決策だと思います。登録プロセスは、すべてのユーザーが一度だけ登録するため、非常に厳しいプロセスではありません。だから私はそれが1つのクエリでこれを実行しようとする価値があるとは思わない。さらに、別の「checkUserName」プロセスでは、すべての登録フォームがサーバーに送信される前に、必要に応じてチェックすることができます。例えば、ユーザが所望のユーザ名を書き終えるとすぐに。

関連する問題