首页 > 解决方案 > 无法在 mongo db 中添加超过 1 个 post 请求

问题描述

我正在使用 mongo db 获取和发布数据,但无法发布超过 1 个请求这是我的代码第二次发布不同的值时我收到错误我无法找到问题,因为我使用不同的值发布但仍然得到同样的错误

代码的第一部分。错误:

"driver": true,
"name": "MongoError",
"index": 0,
"code": 11000,
"keyPattern": {
    "id": 1
},
"keyValue": {
    "id": null
}
const express = require('express')
const app=express();
const cors=require('cors')
const mongoose=require('mongoose');


mongoose.connect('mongodb://localhost:27017/test1',{useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true}).then(()=>{console.log("connected")}).catch(err=>console.log(err));
const bodyParser = require("body-parser")

app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.use(express.json());
const userroute=require('./routes/user')

app.use('/user',userroute);

app.listen(8000,()=>console.log("running on 8000"));

const mongoose = require('mongoose')

const userschema=new mongoose.Schema({
   
    name:{
        type:String,
        required:true,
        unique:false
    },
    img:{
        type:String,
        required:true,
        unique:false
    },
    summary:{
        type:String,
        required:true,
        unique:false
    }
})
module.exports=mongoose.model("User",userschema)

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

router.get('/',(req,res)=>{
    User.find().then(users=>res.json(users)).catch(err=>res.json(err))
})
module.exports= router;  

router.post('/add',(req,res)=>{
    const name=req.body.name;
    const img=req.body.img;
    const summary=req.body.summary;
    const details = new User({name,img,summary});
    details.save().then(()=>res.json(" added ")).catch(err=>res.json(err))
})
router.delete('/:id',(req,res)=>{
    User.findByIdAndDelete(req.params.id).
    then(()=>res.send("deleted")).catch((err)=>res.send(err));
})

标签: node.jsmongodbexpressmongoosemongoose-schema

解决方案


添加答案以编写代码,在注释部分中,理解代码变得混乱。

router.post('/add',(req,res)=>{
    const name=req.body.name;
    const img=req.body.img;
    const summary=req.body.summary;
    const _id = mongoose.Types.ObjectId();
    const details = new User({_id, name, img, summary});
    details.save().then(()=>res.json(" added ")).catch(err=>res.json(err))
})

理想情况下,mongoose 应该自动创建 _id,但我们也可以创建自定义 id


推荐阅读