When I get the data back from my form the req.data looks like this -
{ '”title”': 'Blog Post', '”body”': 'This is a test' }
I can't access it and can't write the data to the test mongoldb file, I assume because its not being recognized as a key value pair.
my index.js file looks like this
const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database', { useNewUrlParser: true });
const BlogPost = require('./models/BlogPost.js');
// connect node with mongo DB
const app = new express();
const ejs = require('ejs');
const { append } = require('express/lib/response');
const { createSecretKey } = require('crypto');
app.set('view engine', 'ejs');
app.use(express.static('public'));
// app.use(express.urlencoded());
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
My app.post looks like this
app.post('/posts/store', (req, res) => {
console.log(req.body);
BlogPost.create(req.body, (error, blogpost) => {
console.log(error, blogpost);
res.redirect('/');
});
});
my schema looks like this
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BlogPostSchema = new Schema({
title: String,
body: String
});
const BlogPost = mongoose.model('BlogPost', BlogPostSchema);
module.exports = BlogPost
My form looks like this
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<form action="/posts/store" method="POST">
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Title</label>
<input
type="text"
class="form-control"
placeholder="Title"
id="title"
name="”title”"
/>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Description</label>
<textarea
rows="5"
class="form-control"
id="body"
name="”body”"
></textarea>
</div>
</div>
<br />
<div class="form-group">
<button type="submit" class="btn btn-primary" id="sendMessageButton">
Send
</button>
</div>
</form>
</div>
</div>
</div>