Серверное приложение Nodejs получает имя и возраст из HTML-формы (с помощью метода post) и с помощью ExpressJS и Mongoose должны создать документ MongoDB. Это работает, но возраст не написано в документе коллекции. Пожалуйста, помогите мне исправить это.
Вот файлы с кодом:
personform.html находится в: C: \ Program Files \ nodejs \ myapp \ public
4.6-mongo.js в: C: \ Program Files \ nodejs \ myapp
Person.js (информация о схеме mongoose и подключении MongoDB) находится в: C: \ Program Files \ nodejs \ myapp
создал .ejs (ejs) в: C: \ Program Files \ nodejs \ myapp \ views
MongoDB устанавливается в: C: \ Program Files
personform.html
<html>
<body>
<form action='/create' method='post'>
Name: <input name='name'>
<p>
Age: <input age='age'>
<p>
<input type=submit value='Submit Form!'>
</form>
</body>
</html>
4,6-mongo.js
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
var Person = require('./Person.js');
app.use('/create', (req, res) => {
var newPerson = new Person ({
name: req.body.name,
age: req.body.age,
});
newPerson.save( (err) => {
if (err) {
res.type('html').status(500);
res.send('Error: ' + err);
}
else {
res.render('created', {person : newPerson});
}
} );
});
app.use('/public', express.static('public'));
app.use('/', (req, res) => { res.redirect('/public/personform.html'); } );
app.listen(8000, () => {
console.log('Listening on port 8000');
});
Person.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase');
var Schema = mongoose.Schema;
var personSchema = new Schema({
name: {type: String, required: true, unique: true},
age: Number
});
module.exports = mongoose.model('Person', personSchema);
personSchema.methods.standardizeName = function() {
this.name = this.name.toLowerCase();
return this.name;
}
created.ejs