私はsocket.ioとmongojsを使用したいくつかのMongoDBを見始めました。
概要:クライアントはsocket.ioを介してサーバーにデータを送信しないため、mongojsは検索するものがなく、コレクション内の最初のドキュメントを返すだけです。適切なアクションを実行できるように、nullまたはfalseを返します。node.jsとこれに非常に新しい助けを感謝します。
ログイン機能が必要ですが、ログインするために作成したリンクをクリックすると、クライアントから実行されます。
<script>
var socket = io.connect('http://localhost:13163');
socket.on('connect', function () {
socket.emit(console.log('Client connected'));
});
socket.on('queryResponse', function (res, err) {
if (res == "[object Object]") {
console.log('EMPTY OBJ SERVER: ' + res + ' ' + err);
}
else{
console.log('IF NOT EXEC' + res[0].email)
}
});
//socket.send('client hello');
//pageload
$(function () {
$('#login').click(function () {
var username = $('#username').val();
var password = $('#password').val();
if (!username || !password) {
event.preventDefault();
console.log('Need data in both fields');
}
else {
event.preventDefault();
socket.emit('querydata', function (username, password) {
console.log("CLIENT: Querying server for data...");
});
}
});
});
</script>
これにより、ユーザー名とパスワードがサーバーに送信され、サーバーは次のコマンドを実行する必要があります。
socket.on('querydata', function (user_username, user_password) {
db.users.find({email: user_username, pass: user_password}, function (err, docs) {
if (err || !docs) {
socket.emit('queryResponse', 'No users found', err);
console.log('if - ' + docs[0].email);
}
else {
socket.emit('queryResponse', docs);
console.log('else - ' + docs[0].email + 'user_password' + user_password + 'user_username' + user_username);
}
});
});
これについて奇妙なのは、コレクションの最初のドキュメントのみが検出されることです。'user_username'と'user_password'のオーバーロードが定義されていないことがわかりましたが、これは私の側からの遅延した間違いですか?