首页 > 解决方案 > post.save 不起作用(Node/Express/MongoDB)

问题描述

我是节点和创建 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)

安慰在此处输入图像描述

这是请求正文: 在此处输入图像描述

还有什么时候会在我的数据库中形成集合?当我添加第一个数据条目时会发生这种情况吗?

标签: node.jsmongodbexpresspostmongoose

解决方案


你没有连接到你的 monogodb。您必须添加 IP 地址和数据库的名称。如果没有该名称的数据库,它将创建一个新的。

  mongoose.connect('mongodb://localhost/myDB', {
    useNewUrlParser: true
});

推荐阅读