Я пытаюсь создать базовую c страницу регистрации, используя node.js, express, mongoDB и AngularJS.
До того, как я попытался реализовать эту функцию регистрации, я использовал Angular маршрутизацию для своих просмотров.
См. Содержимое моего файла app.routes ниже ...
angular.module('app.routes', [])
.config(function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "views/Login.html"
})
.when("/Register", {
templateUrl: "views/Register.html"
})
.when("/Home", {
templateUrl: "views/Home.html",
controller: "homeController"
})
.when("/CocktailDetails", {
templateUrl: "views/CocktailDetails.html",
controller: "cocktailDetailsController"
})
.when("/Favourites", {
templateUrl: "views/Favourites.html",
controller: "favouritesController"
})
.otherwise({
redirectTo: "/"
})
})
Когда приложение загружается, оно направляет пользователя на страницу входа, если у него нет учетной записи. есть ссылка на go страницу регистрации, URL для этой страницы: http://localhost: 3000 / #! / Зарегистрироваться .
Пожалуйста, посмотрите на страницу регистрации ниже ...
<div class="main">
<p class="sign" align="center">Register</p>
<form class="form1" action="/Register" method="POST">
<input class="un " type="email" align="center" placeholder="Email" name="username" required>
<input class="pass" type="password" align="center" placeholder="Password" name="password" required>
<a class="submit" align="center">Register</a>
</div>
Поэтому, когда они нажимают ссылку / кнопку отправки, он выполняет запрос POST, чтобы создать нового пользователя в userDB.
См. Сервер. js содержимое файла ниже ...
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();
const router = express.Router();
app.use(bodyParser.urlencoded({
extended: true
}))
app.use(express.static('node_modules'));
app.use(express.static('public'));
mongoose.connect("mongodb://localhost:27017/userDB", { useNewUrlParser: true });
const userSchema = {
email: String,
password: String
};
const User = new mongoose.model("User", userSchema);
//Routes
app.get("/", function (req, res) {
res.render("Login");
});
app.get("/Register", function (req, res) {
res.render("Register");
});
app.get("/Home", function (req, res) {
res.render("Home");
});
app.get("/CocktailDetails", function (req, res) {
res.render("CocktailDetails");
});
app.get("/Favourites", function (req, res) {
res.render("Favourites");
});
app.use(router);
const port = 3000;
app.listen(port);
console.log('Server is running on port 3000');
//POSTS
app.post("/Register", function (req, res) {
const newUser = new User({
email: req.body.username,
password: req.body.password
});
newUser.save(function (err) {
if (err) {
console.log(err);
} else {
res.render("Home")
}
});
})
Я отразил мои angular маршруты для express маршрутов.
Но когда я нажимаю кнопку регистрации, ничего не происходит, проверяя консоль, никаких ошибок, но не выполняется POST-запрос.
Что мне здесь не хватает? Я попытался изменить запросы на сервере. js, но не повезло.
Мне интересно, связано ли это с тем, что angular ставит #! на URL для каждого просмотра.
Нужно ли для HTML5 mode установить значение true в моем angular файле маршрута?
Моя файловая структура для представлений - это публичные c> представления.
На данный момент я просто пытаюсь ввести базовые c имя пользователя и пароль в базу данных, я расскажу о реализации паспорта и шифрования на более позднем этапе.