나는 socket.io와 mongojs를 가진 MongoDB를 살펴보기 시작했습니다.socket.io는 mongojs 쿼리에서 [object Object]를 반환합니다.
요약 : 클라이언트가 socket.io를 통해 서버로 데이터를 보내지 않으므로 mongojs가 검색 할 항목이 없으며 컬렉션의 첫 번째 문서 만 반환합니다. null 또는 false를 반환하여 가져올 수 있도록하고 싶습니다. 알맞은 행동. 모든 도움을 주셨습니다. node.js와 this를 매우 신중하게 사용하십시오.
나는 기능에 로그가 필요하지만이 로그인을 내가 만들어 놓은 링크를 클릭하면 클라이언트에서 실행해야합니다
<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'오버로드가 정의되지 않았 음을 알았습니다. 내 편이 약간 지연된 실수입니까?
server.js를 도와 주셔서 감사합니다. 데이터를 클라이언트로 다시 가져 오는 데 문제가 있습니다. 문서에 올바른 데이터가 있는지 확인하고 리디렉션하고 세션을 설정했지만 JSON.parse (docs)를 사용하려고하면이 오류가 발생합니다. Uncaught SyntaxError : 예기치 않은 토큰 u localhost : 39 (익명 함수) 로컬 호스트 39 EventEmitter.emit의 socket.io.js : 633 SocketNamespace.onPacket의 socket.io.js : 2,248 Socket.onPacket의 socket.io.js : 1,930 Transport.onPacket socket.io.js : 1332 Transport.onData socket.io.js : 1303 stateChange – mackwerk
답변을 업데이트하고 업데이트 된 부분을 시도해보고 어떻게되는지 알려주세요. –
글쎄, 내가 잘못 입력 한 적이 없다. 왜냐하면 내가 uername : asd와 password를 입력하면 항상 예를 들어 반환하기 때문이다 : asd 이것은 다음과 같이 반환한다 :'xhr-polling writing 5 ::: { "name": "queryResponse" "args": [{ "email": "asd", "pass": "asd"}]} ' – mackwerk