我只能在一个用户名下创建一个用户帖子。因此,当我尝试用另一个用户名创建新帖子或以相同的名称创建新帖子时,会显示此错误。
的例子:在伊莱恩创建了一个新的第一个帖子。它工作。但是当我尝试在他下面创建一个新帖子时,它不会工作,并收到错误。
{
"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)