Я хочу использовать socekt.io для нового проекта, который я создаю. Я использую socket.io в качестве компонента входа в систему и буду использовать socket.io в будущем для обновления страниц, таких как приложение чата. Я также использую mon goose для обработки моего соединения mongodb. Я беру имя пользователя и возвращаю пароль на свой интерфейс для хеширования bcrypt js compareSync
. Проблема, с которой я сталкиваюсь, заключается в том, что все, что возвращается в интерфейс, не определено. Когда я распечатываю то, что возвращается в интерфейс, он распечатывает значение, которое я ищу. Что-то происходит между сервером, который что-то испускает, и интерфейсом, который что-то получает, но я не знаю, что именно. Вот мой код для серверной части:
const express = require('express')
const socket = require('socket.io');
const http = require('http');
const router = require('./router');
const mongoose = require('mongoose');
let Player = require('../models/player.model');
require('dotenv').config();
const PORT = process.env.PORT || 5000;
const app = express();
const server = http.createServer(app);
const uri = process.env.ATLAS_URI;
mongoose.connect(uri, {useNewUrlParser: true, useCreateIndex: true,
useUnifiedTopology: true });
const connection = mongoose.connection;
connection.once('open',() => {
console.log('MongoDB database connection established successfully')
});
const io = socket(server);
io.on('connection', (socket) => {
console.log('We have a new connection');
socket.on('login', ({ username }, callback) => {
console.log(username);
Player.find({"username": username}, function (err, player) {
if(err) {
console.log("there has been an error"), {player: null}
}
socket.emit('id', { password: player[0]['password'].toString(), id : player[0]['_id']})
}) })})
app.use(router);
server.listen(PORT, () => console.log('Server is working'))
Вот мой код для передней части:
const ENDPOINT = 'localhost:5000';
async function submitAccount (e) {
e.preventDefault();
socket.emit('login', { username });
socket.on("id", (response) => {
setPassword2(String(response['password']));
id = response['id']; console.log(id);
console.log(password2)
});
try {
if (bcrypt.compareSync(password, password2) == true) {
props.setCookie("id", id);
setAccess(true);
access2 = true;
console.log(access2)
console.log('works')
}
else {
setErrorType('Invalid Password')
setErrorMsg('There is an issue with your password. Please try again')
setOpenModal(true)
console.log(password);
console.log(password2);
}
}
catch {
setErrorType('Invalid Username')
setErrorMsg('This username does not exist. Please try another')
setOpenModal(true)
}
Спасибо за помощь!