post.save不起作用(Node / Express / MongoDB)

问题描述 投票:0回答:1

我是Node和创建api的新手。我可以在请求正文中传递json并将其登录到控制台,但是当我尝试将此数据添加到数据库时出现问题。我正在尝试将数据添加到DB(cloud: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 

这是我的app.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

而且集合何时会在我的数据库中形成?当我添加数据的第一个条目时会发生这种情况吗?

node.js mongodb express post mongoose
1个回答
0
投票

您未连接到monogodb。您必须添加IP地址和集合名称。如果没有使用该名称的集合,它将使用该名称创建一个新集合。

  mongoose.connect('mongodb://localhost/myDB', {
    useNewUrlParser: true
});
© www.soinside.com 2019 - 2024. All rights reserved.