【问题标题】:cannot GET using express无法使用快递获取
【发布时间】:2021-05-07 06:24:46
【问题描述】:

我正在制作一个 API,可以记录使用该应用程序的用户的日志,到目前为止,我已经做到了,以便登录可以将用户名和房间发布到 API,但我无法制作它从 API 获取用户名,并在页面被重定向后将其显示在聊天中。

编辑:我应该为正在发生的事情添加一些细节......在我发布数据后我得到这个错误:没有指定默认引擎并且没有扩展名 提供。 后跟 **UnhandledPromiseRejectionWarning:未处理的承诺拒绝。 **

index.html 代码:

    <body>
    <img class="uao" src="/imagenes/UAO.svg">
    <div class="containerLogo"><img src="/imagenes/logo.png" /></div>

    <div class="join-container">

        <main class="join-main">
            <form name="form">
                <div class="form-control">
                    <label for="username">Usuario</label>
                    <input type="text" name="username" id="username" placeholder="Ingrese su usuario..." required />
                </div>
                <div class="form-control">
                    <label for="room">Equipo</label>
                    <select name="room" id="room">
                        <option value="rojo">Equipo rojo</option>
                        <option value="amarillo">Equipo Amarillo</option>
                        <option value="blanco">Equipo Blanco</option>
                        <option value="azul">Equipo Azul</option>
                        <option value="negro">Equipo Negro</option>

                    </select>
                </div>

                <button id="login-gerente" type="button" class="btn" onclick="myFunction()">Gerente</button>
                <button id="login-mecanico" type="button" class="btn" onclick="myFunction2()">Mecanico</button>
                <button id="login-capitan" type="button" class="btn" onclick="myFunction3()">Capitan</button>
            </form>
        </main>
    </div>






</html>
<!--<script src="js/api.js"></script>-->

<script src="/js/index.js"></script>

<script>
    function myFunction() {
        location.replace("Gerente.html")
    }
</script>

<script>
    function myFunction2() {
        location.replace("Mecanico.html")
    }
</script>

<script>
    function myFunction3() {
        location.replace("capitan.html")
    }
</script>

</body>

index.js 重定向代码:

window.onload = () => {

document.getElementById("login-gerente").onclick = () => {
    console.log("inicio");
    //recoger los datos del formulario 

    let user = {};

    user.username = document.getElementById("username").value;

    user.room = document.getElementById("room").value;

    console.log(user);


    //crear el Json de la petición
    //peticion post: utilizar fetch
    fetch("/jugadores", {
            method: 'post',
            headers: {
                "Content-type": "application/json"
            },
            body: JSON.stringify(user)
        })
        .then(user)
        .then(function(data) {
            console.log('Request succeeded with JSON response', data);
        })
        .catch(function(error) {
            console.log('Request failed', error);
        });

    //validación de usuario


    //redirección
    window.location.assign("/Gerente.html")

}



    //mecanico
    document.getElementById("login-mecanico").onclick = () => {
        console.log("inicio");
        //recoger los datos del formulario 

        let user = {};

        user.username = document.getElementById("username").value;

        user.room = document.getElementById("room").value;

        console.log(user);


        //crear el Json de la petición
        //peticion post: utilizar fetch
        fetch("/jugadores", {
                method: 'post',
                headers: {
                    "Content-type": "application/json"
                },
                body: JSON.stringify(user)
            })
            .then(user)
            .then(function(data) {
                console.log('Request succeeded with JSON response', data);
            })
            .catch(function(error) {
                console.log('Request failed', error);
            });

        //validación de usuario


        //redirección
        window.location.assign("/Mecanico.html")

    }

    //capitan

    document.getElementById("login-capitan").onclick = () => {
        console.log("inicio");
        //recoger los datos del formulario 

        let user = {};

        user.username = document.getElementById("username").value;

        user.room = document.getElementById("room").value;

        console.log(user);


        //crear el Json de la petición
        //peticion post: utilizar fetch
        fetch("/jugadores", {
                method: 'post',
                headers: {
                    "Content-type": "application/json"
                },
                body: JSON.stringify(user)
            })
            .then(user)
            .then(function(data) {
                console.log('Request succeeded with JSON response', data);
            })
            .catch(function(error) {
                console.log('Request failed', error);
            });

        //validación de usuario


        //redirección
       window.location.assign("/Capitan.html")

    }

};

server.js 代码:

require('dotenv').config()

const path = require('path');
const http = require('http');
const express = require('express');
const socketio = require('socket.io');
var bodyParser = require('body-parser');

const mongoose = require('mongoose');

const formatMessage = require('./utils/messages');
const {
    userJoin,
    getCurrentUser,
    userLeave,
    getRoomUsers
} = require('./utils/users');


const app = express();
const server = http.createServer(app);
const io = socketio(server);

// Set static folder
app.use(express.static(path.join(__dirname, 'public')));

app.use(bodyParser.urlencoded({
    extended: true
}));

//base de datos
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true, useUnifiedTopology: true })
const db = mongoose.connection
db.on('error', (error) => console.error(error))
db.once('open', () => console.log('connected to database'))

app.use(express.json())

const jugadoresRouter = require('./routes/jugadores')
app.use('/jugadores', jugadoresRouter)

// fin base de datos




const botName = 'admin';

// Run when client connects
io.on('connection', socket => {
    socket.on('joinRoom', ({ username, room }) => {
        const user = userJoin(socket.id, username, room);

        socket.join(user.room);

        // Welcome current user
        socket.emit('message', formatMessage(botName, `bienvenido al chat! ${user.username}`));

        // Broadcast when a user connects
        socket.broadcast
            .to(user.room)
            .emit(
                'message',
                formatMessage(botName, `${user.username} Se ha unido al chat`)
            );

        // Send users and room info
        io.to(user.room).emit('roomUsers', {
            room: user.room,
            users: getRoomUsers(user.room)
        });
    });

    // Listen for chatMessage
    socket.on('chatMessage', msg => {
        const user = getCurrentUser(socket.id);



        io.to(user.room).emit('message', formatMessage(user.username, msg));
    });

    //listen for solicitud
    socket.on('solicitud', (cantidad) => {
        const user = getCurrentUser(socket.id);
        socket.broadcast.emit('message', formatMessage(botName, `el mecanico (${user.username}) necesita ${cantidad}`));
        socket.emit('message', formatMessage(botName, `has solicitado ${cantidad}`));
    });

    //listen for enviar
    socket.on('envio', (cantidad2) => {
        const user = getCurrentUser(socket.id);
        socket.broadcast.emit('message', formatMessage(botName, `el gerente(${user.username}) ha enviado ${cantidad2}`));
        socket.emit('message', formatMessage(botName, `has enviado ${cantidad2}`));
    });

    // Runs when client disconnects
    socket.on('disconnect', () => {
        const user = userLeave(socket.id);

        if (user) {
            io.to(user.room).emit(
                'message',
                formatMessage(botName, `${user.username} has left the chat`)
            );

            // Send users and room info
            io.to(user.room).emit('roomUsers', {
                room: user.room,
                users: getRoomUsers(user.room)
            });
        }
    });
});

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => console.log(`Server running on port ${PORT}`)); 

jugador.js 型号代码:

const mongoose = require('mongoose')

//login schema
const jugadorSchema = new mongoose.Schema({
    username:{
        type: String,
        required: true
    },
    room:{
        type: String,
        required: true
    },
    Date:{
        type: Date,
        required: true,
        default: Date.now
    }
})



module.exports = mongoose.model('Jugador', jugadorSchema);

jugadores.js 路由代码:

const express = require('express')
const router = express.Router()
const Jugador = require('../model/jugador')

//getting all
router.get('/', async(req, res) => {
    try {
        const jugadores = await Jugador.find()
        res.json(jugadores)
    } catch (err) {
        res.status(500).json({ message: err.message })
    }

});

//get one
router.get('/:id', getJugador, (req, res) => {
    res.json(res.jugador)
});


//post one
router.post('/', async(req, res) => {
    console.log(req.body.username);
    const jugador = new Jugador({
        username: req.body.username,
        room: req.body.room
    })
    try {
        const newJugador = await jugador.save()
        res.status(201).json(newJugador)
    } catch (err) {
        res.status(400).json({ message: err.message })
    }
    res.render('public/Gerente', {
        username: jugador.username,
        room: jugador.room
    });
    res.end();
});

//update one
router.patch('/:id', getJugador, async(req, res) => {
    if (req.body.username != null) {
        res.jugador.username = req.body.username
    }
    if (req.body.room != null) {
        res.jugador.room = req.body.room
    }
    try {
        const updatedJugador = await res.jugador.save()
        res.json(updatedJugador)
    } catch (err) {
        res.status(400).json({ message: err.message })
    }
})

//delete one
router.delete('/:id', getJugador, async(req, res) => {
    try {
        await res.jugador.remove()
        res.json({ message: 'Deleted user' })
    } catch (err) {
        res.status(500).json({ message: err.message })
    }
})


//
async function getJugador(req, res, next) {
    let jugador
    try {
        jugador = await Jugador.findById(req.params.id)
        if (jugador == null) {
            return res.status(404).json({ message: 'Cannot find jugador' })
        }
    } catch (err) {
        return res.status(500).json({ message: err.message })
    }

    res.jugador = jugador
    next()
}

module.exports = router

【问题讨论】:

    标签: node.js express mongoose socket.io


    【解决方案1】:

    将 router.post("/", ...) 中的 "/" 替换为 "/jugadores";

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2020-04-27
      • 2016-06-26
      • 2014-03-03
      相关资源
      最近更新 更多