Узлу не удалось сохранить данные в mongodb - PullRequest
0 голосов
/ 02 июня 2018

Я на узле 9.4.0.Я пытался следовать учебному пособию на YouTube - Traversy media (https://www.youtube.com/watch?v=xrxDk1zLKdc).. В учебнике я сделал все, чтобы разобрать HTML-форму, созданную pug, и сохранить данные формы в таблице mongoDB. Вот что я сделал.

//initailize
const express = require('express');
const path = require('path');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

mongoose.connect('mongodb://localhost/nodekb');
let db = mongoose.connection;

*********************************************
//check connection
db.once('open', function(){
    console.log('Connected to Mongodb');
});

//check for db error
db.on('error',function(err){
    console.log(err);
});

//init app
const app = express();

// bring in models
let Article=require('./models/article');


//load view engine
app.set('views',path.join(__dirname,'views'));
app.set('view engine','pug');
//app.set('view engine','php');
//
//Body parser
app.set(bodyParser.urlencoded({extended: false}));
//parse application/json
app.use(bodyParser.json());


//home route
app.get('/',function(req,res){

Article.find({},function(err,articles){
    if(err){
        console.log('error');
    }
    else
    {
        res.render('index.pug',{
            title:'articles',
            allarticles: articles
        });
    }
})


    //res.send('Hello world');
});

//a route to another resource
app.get('/articles/add',function(req,res){
    res.render('add_article.pug',{
        title:'Add articles'
    });
});

// Add submit POST route
app.post('/articles/add',function(req,res){
    let article = new Article();
    article.title = req.body.title;//we need to install and include body-parser to parse form html body
    article.author = req.body.author;
    article.body = req.body.body;

    article.save(function(err){
        if(err){
            console.log(err);
            return;
        }
        else {
            res.redirect('/');
        }
    });

    //console.log('Submitted');
    //return;
});


app.listen('3000',function(){
    console.log('server started on port 3000');
});
extends layout

doctype html
html
    head
        title node app with express framework
    body
            h2 #{title}

            form(method='POST', action='/articles/add')
                #form-group
                    label Title:
                    input.form-control(name='title', type='text')
                #form-group
                    label Author:
                    input.form-control(name='author', type='text')
                #form-group
                    label Body:
                    textarea.form-control(name='body')
                input.btn.btn-primary(type='submit', value='submit')

Каждый раз, когда я заполняю данные и отправляю, БД увеличивается на одну, но пустую запись. По какой-то причине данные не достигают БД, но фактически увеличивают одну пустую запись.

...