post.save не работает (Node / Express / MongoDB) - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в узле и создаю API. Я могу передать json в теле запроса и войти в него на консоли, но проблема возникает, когда я пытаюсь добавить эти данные в свою базу данных. Я пытаюсь добавить данные в БД (облако: Atlas), но post.save не работает. Это мой post.model. js

const mongoose = require('mongoose')

const PostSchema = mongoose.Schema({
    title: {
        type: String,
        required: true

    },
    description: {
        type: String,
        required: true

    },
    date: {
        type: Date,
        default: Date.now
    }
})

module.exports = mongoose.model('Posts', PostSchema)

Это контроллер (posts. js)

const express = require('express')
const router = express.Router()
const Posts = require('../model/posts.model')

router.get('/', (req, res) => res.send('We are on posts page'))
router.get('/specific', (req, res) => res.send('We are on specific post page'))

router.post('/', async (req, res) => {
    const post = new Posts({
        title: req.body.title,
        description: req.body.description
    })

    // try{
    // const savedPost = await this.post.save()
    // res.json(savedPost)
    // }
    // catch(arr){
    //     res
    // }
    console.log('before save');

    post.save().then(data => {
        console.log("in then");

        res.json(data)
    })
        .catch(err => {
            console.log('in catch');

            res.json({ message: err })
        })
})
module.exports = router 

Это мое приложение. js

const express = require('express')
const app = express()
const mongoose = require('mongoose')
const bodyParser =require('body-parser')
require('dotenv/config')

//Import Routes
const postsRoutes = require('./routes/posts')

//Middelware
app.use(bodyParser.json())//to be used before app.use(<routes>)

app.use('/posts', postsRoutes)

//app.use(express.bodyParser())

//ROUTES
app.get('/', (req, res) => res.send('We are on home page'))

app.get('/posts', (req, res) => res.send('WE are on posts page '))

//Connect to DB

mongoose.connect('DB_CONNECTION', { useNewUrlParser: true }, () => console.log('Connected to db'))

//how to start listening to the server

app.listen(3000)

Консоль enter image description here

Это тело запроса: enter image description here

Также, когда коллекции будут формироваться в моей базе данных ? Произойдет ли это, когда я добавлю первый ввод данных?

1 Ответ

0 голосов
/ 17 апреля 2020

Вы не подключены к своему моногоду. Вы должны добавить IP-адрес и имя базы данных. Если нет базы данных с таким именем, она создаст новую.

  mongoose.connect('mongodb://localhost/myDB', {
    useNewUrlParser: true
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...