不能创建新的Post (API)



我只能在一个用户名下创建一个用户帖子。因此,当我尝试用另一个用户名创建新帖子或以相同的名称创建新帖子时,会显示此错误。

的例子:在伊莱恩创建了一个新的第一个帖子。它工作。但是当我尝试在他下面创建一个新帖子时,它不会工作,并收到错误。

{
"index": 0,
"code": 11000,
"keyPattern": {
"username": 1
},
"keyValue": {
"username": "elaine"
}
}

所以我尝试创建一个新用户并在该用户下创建一个新帖子,但我收到这个错误https://ibb.co/0yzSvb5

{
"index": 0,
"code": 11000,
"keyPattern": {
"email": 1
},
"keyValue": {
"email": null
}
}

post.js


const router = require('express').Router()
//I'm pulling the USER from models
const User = require('../Models/User')
const Post = require('../Models/Post')
//to unencrpt
//THIS IS CRUD
//CREATE POST -- PUT METHOD USE IN UPDATING  (/:id ) => user id
router.post('/', async (req, res) => {
const newPost = new Post(req.body)
try {
const savedPost = await newPost.save()
res.status(200).json(savedPost)
} catch (err) {
res.status(500).json(err)
}
})

module.exports = router

PostSchema.js

const mongoose = require('mongoose')
const PostSchema = new mongoose.Schema(
{
title: {
type: String,
required: true,
unique: true,
},
desc: {
type: String,
required: true,
},
photo: {
type: String,
required: false,
},
username: {
type: String,
required: true,
},
categories: {
type: Array,
required: false,
},
},
{ timestamps: true }
)
module.exports = mongoose.model('Post', PostSchema)

index.js

const express = require('express')
const app = express()
const port = 5000
const dotenv = require('dotenv')
const authRoute = require('./routes/auth')
const userRoute = require('./routes/users')
const postRoute = require('./routes/posts')
const mongoose = require('mongoose')
dotenv.config()
app.use(express.json())
mongoose
.connect(process.env.MONGO_URL)
.then(console.log('Connected'))
.catch((err) => console.log(err))
//Calling auth route
app.use('/api/auth', authRoute)
app.use('/api/users', userRoute)
app.use('/api/posts', postRoute)
app.listen(port, () => {
console.log(`Listening at http://localhost:${port}`)
})

userSchema.js

const mongoose = require('mongoose')
const UserSchema = new mongoose.Schema(
{
username: {
type: String,
required: true,
unique: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
profilePic: {
type: String,
default: '',
},
},
{ timestamps: true }
)
module.exports = mongoose.model('User', UserSchema)

这个错误来自您的模式。你使用unique : true约束。这样猫鼬就不能得到相同值的数据。每次你都需要添加不同的值。第二个选择是去除unique : true约束。例子:

const mongoose = require('mongoose')
const UserSchema = new mongoose.Schema(
{
username: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
profilePic: {
type: String,
default: '',
},
},
{ timestamps: true }
)
module.exports = mongoose.model('User', UserSchema)

最新更新