基本的には、ユーザーが(keyupイベントを使用して)ユーザー名入力フィールドに書き込みを行い、サーバーのsocket.ioを使用して入力フィールドの値をサーバーに送信します。あなたはその値でデータベース(model.findOne in mongoose)のクエリを実行し、存在する場合にはユーザを返します。 ここで重要なのは、ユーザー名フィールドをmongooseで一意にするか、新しいインデックスを手動で作成することにより、高速検索のためにデータベースにユーザー名のインデックスを作成することです。
例:jQueryを使って
フロントエンド:マングースと
$(document).ready(function() {
var username = $('#username');
username.keyup(function() {
var value = username.val();
socket.emit('find_user', value);
});
});
socket.on('find_user_result', function(user) {
// treat result here
});
バックエンド:あなたの条件に
socket.on('find_user', function(value) {
User.findOne({username: value}, function(err, user) {
if (err) throw err;
if (!user) socket.emit('find_user_result', {});
else socket.emit('find_user_result', user);
});
})
私はこのコードを実装しており、約束のライブラリが廃止されたという警告を受けています。私はブルーバード(別の約束のライブラリ)をインストールしましたが、これがあなたが提供したコードをどのように変更するのかはわかりません。何か案は? – jblew
ブルーバードを使用している場合は、mongooseを使ってブルーバードの約束をhttp://mongoosejs.com/docs/promises.htmlにしてください。コードに影響するとは思わない –
約束を使用するには、 findOneをthen関数に変更する –