Почему ни один из моих методов http не будет работать из моей новой папки маршрутизатора? и как я могу это исправить? - PullRequest
0 голосов
/ 28 марта 2020

Это мой первый веб-проект. Я в основном пытаюсь сделать простой сайт, чтобы продавать легкие сабли. Цель состоит в том, чтобы иметь возможность создать учетную запись, войти, добавлять, редактировать и удалять легкие сабли. Иметь возможность добавить их в корзину и оформить заказ. Я использую node.js, express и mongoDB в коде Visual Studio. Я также изучаю github на протяжении всего процесса. На данный момент у меня есть макет сайта в основном настроен. Умею создавать аккаунты и авторизоваться. В настоящее время я застрял на создании предметов (легкие сабли) и сохранения их в базе данных mongoDB. В частности, мои методы http в файлах маршрутов / элементов не работают, они ранее работали в файле приложения. js, но я решил переместить все для организационных целей. Опять же, я впервые работаю с любой из этих технологий, и этот проект находится в стадии разработки, любой вклад приветствуется. Спасибо.

Вот мой код: много кода не используется, и это своего рода беспорядок. Я знаю ..

приложение. js файл:

const express = require("express");
const session = require("express-session");
var mongoose = require("mongoose");
var passport = require("passport");
var bodyParser = require('body-parser');
var localStrategy = require('passport-local');
var passportLocalMongoose = require("passport-local-mongoose");
var router = express.Router();

const app = express();

const indexRouter = require('./routes/index')
const itemsRouter = require('./routes/items')



 //npm install ejs body-parser mongoose passport passport 
    var uri = "mongodb://username:password@cluster0-shard-00-00- 
 hnxfk.mongodb.net:27017,cluster0-shard-00-01- 
 hnxfk.mongodb.net:27017,cluster0-shard-00-02- 
 hnxfk.mongodb.net:27017/test? 
 ssl=true&replicaSet=Cluster0-shard- 
 0&authSource=admin&retryWrites=true&w=majority";
    var localHost = "mongodb://localhost:27017/Project2SamJoshEricRoy"
    mongoose.connect(uri,{useNewUrlParser: true, useUnifiedTopology: 
true });

var User = require('./models/user');
var Item = require('./models/item');

// var app = express();
app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({extended:true}));
app.use(require('express-session')({

    secret: "application secret shhhh",
    resave: false,
    saveUninitialized: false
}));

passport.use(new localStrategy(User.authenticate()))
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(express.static(__dirname + '/public'));


app.use(passport.initialize());
app.use(passport.session());


app.use('/', indexRouter)

app.use('/items', itemsRouter)




 //create account 
 app.get("/createAccount",(req,res)=> {
    res.render("createAccount");

});

app.get('/createAccount', function(req,res) {
    res.render('createAccount'); 
});


app.post("/createAccount",(req,res)=> {
    req.body.username;
    req.body.password;
    User.register(new 
User({username:req.body.username}),req.body.password, 
(err,user) =>{
        if(err) {
            console.log(err);

            return res.render("createAccount");
        }
        passport.authenticate("local")(req,res,() => {
            res.redirect('/login');
            console.log(req.body.username
                +  " " + req.body.password);
            console.log(user);

        });

    });
});


//login

app.get("/login",(req,res) => {
    res.render("login")
    User.find(function(err,users) {
        if(err) {
            console.log(err);
        }
        // console.log(users);
    })
});


app.post('/login',passport.authenticate("local",{

    successRedirect: "/lightsabers",
    failureRedirect: "/login"
}),(req,res)=> {

});



function isLoggedIn(req,res,next) {
    console.log("CALL")
    if(req.isAuthenticated()) {
        console.log("logged in ");
        return next();

    }
    res.redirect("/login");
    console.log("error logging in");
}


//logout 

app.get("/logout",(req,res)=> {
    req.logout();
    res.redirect('/');
});


//lightsabers

//app.get("/lightsabers",isLoggedIn,(req,res)=> {
    //res.render("lightsabers",{user: req.user});
    //console.log(req.user);
//});



//shopping cart
app.get("/cart",(req,res)=> {
    res.render("cart");

});

app.get('/createLightsaber',(req,res)=> {
    res.render("newItem",{user:req.User});
    console.log("user is with us");
    console.log(req.user)
});

app.get('/updateItem',(req,res)=> {
    res.render("updateLightsaber");

});

app.get('/deleteLightsaber',(req,res)=> {
    res.render("updateLightsaber");

});

/ маршруты / индекс. js файл:

const express = require('express')
const router = express.Router()

router.get('/', (req, res) => {
    res.render('index')
})

module.exports = router

маршруты / элементы. js

const express = require('express')
const router = express.Router()
const Item = require('../models/item')

//display page
router.get("/",(req,res)=> {
    res.render("newItem");
});


// all items route
router.get('/', async (req, res) =>{
    try{ 
        const items = await Item.find({})
        res.render('items/newItem', {item: new Item() })

    } catch {
        res.redirect('/')
    }
})

//new item route (display form)
router.get('/newItem', (req, res) => {
    res.render('items/newItem', {item: new Item() })
})

// create new item route (actual creation)
router.post('/newItem', async (req,res) => {
    const item = new Item({
        color:req.body.color,
        price:req.body.price, 
        link:req.body.link
    })
    try{
        const newItem = await item.save()
        res.redirect('lightsabers')
    } catch {
        res.render('items/newItem', {
            item: item,
            errorMessage:'Error creating item'
        })
    }

}) 


/update item 
    app.get("/updateItem",(req,res)=> {
        res.render("updateItem");

    });

module.exports = router

newItem.e js

<!DOCTYPE html>
<html>
    <head>
        <title> </title>
        <link rel="stylesheet" href="/css/styles.css"/>
    </head>
    <body>

        <h1> Adding New Item </h1>


        <form action="/items" method="POST">
        <h2>

            Color: <input type="text" name="color"><br>    
            Price: <input type="text" name="price"><br>
            Image Link:<input type="text" name="link"><br>


            <br><br>
            <button id="addItem">Add Item</button>

            <%= typeof(message) != "undefined"?message:"" %>
        </h2>

        </form> 
                <form action="/lightsabers">
          <h2><button> Back </button></h2>
        </form>

        <script type="text/javascript" src="../public/app.js"> 
</script>
    </body>
</html>

Если вы хотите sh, чтобы увидеть другие части кода, дайте мне знать. Я могу забыть что-то важное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...