#javascript #node.js #database #express #mongoose
Вопрос:
Проверьте Мой Node.js код Пожалуйста, я хочу сохранить данные страницы контактов в компасе мангуста это не вызывает никаких ошибок, но и не сохраняет данные
lt;form action="/" class="contact_form grid" method="POST"gt;
HTML НАПИСАН АБСОЛЮТНО ПРАВИЛЬНО, Я ДУМАЮ, ПОЖАЛУЙСТА, СКАЖИТЕ МНЕ, ЧТО В ЭТОМ НЕ ТАК APP.JS КОД
const express = require('express'); const mongoose = require('mongoose'); const app = express(); const bodyparser = require('body-parser') const path = require('path'); mongoose.connect('mongodb://localhost:27017/ContactPage'); const port = 3000; var contactSchema= new mongoose.Schema({ name:{type:String}, email:{type:String}, project:{type:String}, message:{type:String} }); var Contact = mongoose.model('Contact', contactSchema); module.exports = Contact; app.use('/static', express.static('static')) // For serving static files app.use(express.urlencoded({extended: true})) app.set('view engine', 'ejs'); app.get('/', function(req,res){ res.sendFile(path.join(__dirname, "index.html")) }); app.post('/',(req,res)=gt;{ var myData = new Contact(req.body); myData.save().then(()=gt;{ res.send(req.body) }).catch(()=gt;{ res.status(400).send(req.body); }); }); app.listen(port, () =gt; { console.log(`Example app listening at http://localhost:${port}`) })
Проверьте Мой Node.js код Пожалуйста, я хочу сохранить данные страницы контактов в компасе мангуста это не вызывает никаких ошибок, но и не сохраняет данные
lt;form action="/" class="contact_form grid" method="POST"gt; lt;div class="contact_inputs grid"gt; lt;div class="contact_content"gt; lt;label for="" class="contact_label"gt;Namelt;/labelgt; lt;input type="text" name= "name" class="contact_input"gt; lt;/divgt; lt;div class="contact_content"gt; lt;label for="" class="contact_label"gt;Emaillt;/labelgt; lt;input type="email"name="email" class="contact_input"gt; lt;/divgt; lt;/divgt; lt;div class="contact_content"gt; lt;label for="" class="contact_label"gt;Projectlt;/labelgt; lt;input type="text" name="project" class="contact_input"gt; lt;/divgt; lt;div class="contact_content"gt; lt;label for="" class="contact_label"gt;Messagelt;/labelgt; lt;textarea name="" id="" cols="0" rows="7" name = "message" class="contact_input"gt;lt;/textareagt; lt;/divgt; lt;divgt; lt;a href="" class="button button--flex"gt; Send Message lt;i class="fas fa-paper-plane button_icon"gt;lt;/igt; lt;/agt; lt;/divgt; lt;/formgt;
Комментарии:
1. Нет необходимости КРИЧАТЬ
2. Сработал ли с вами ответ
Ответ №1:
#1 вы отправляете не из HTML, поэтому вместо:
lt;divgt; lt;a href="" class="button button--flex"gt; Send Message lt;i class="fas fa-paper-plane button_icon"gt;lt;/igt; lt;/agt; lt;/divgt;
писать:
lt;button type="submit"gt; Send Message lt;/buttongt;
#2 явные улучшения
Файл contactSchema:
const mongoose = require('mongoose') var contactSchema = new mongoose.Schema({ name: { type: String }, email: { type: String }, project: { type: String }, message: { type: String } }); module.exports = mongoose.model('Contact', contactSchema);
файл приложения:
const express = require('express'); const mongoose = require('mongoose'); const bodyparser = require('body-parser') const path = require('path'); const port = 3000; const app = express(); app.use('/static', express.static('static')) // For serving static files app.use(express.urlencoded({ extended: true })) app.set('view engine', 'ejs'); app.get('/', function (req, res) { res.sendFile(path.join(__dirname, "index.html")) }); app.post('/', (req, res) =gt; { var { name, email, project, message } = req.body; var myData = new Contact({ name, email, project, message, }); myData.save().then((newData) =gt; { res.send(newData) }).catch((err) =gt; { res.status(400).send("Error: ", err, " , Data: ", req.body); }); }); app.listen(port, () =gt; { mongoose.connect('mongodb://localhost:27017/ContactPage') .then(() =gt; console.log("Server amp; DB listening at http://localhost:${port}")) .catch(err =gt; console.log(err)); })