无法创建新帖子 (API)
Posted
技术标签:
【中文标题】无法创建新帖子 (API)【英文标题】:Can't create a new Post (API) 【发布时间】:2021-11-07 13:12:40 【问题描述】:我只能在一个用户名下创建一个用户帖子。因此,当我尝试从另一个用户名创建新帖子或以相同名称创建新帖子时,会显示此错误。
示例:> elaine 创建了一个新的第一篇文章。有效。但是当我尝试在他下面创建一个新帖子时,它不起作用,并收到错误。
"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)
【问题讨论】:
您能提供用户架构吗? @mohammadNaimi 已编辑 谢谢提供postRoute
功能
@mohammadNaimi 它已经存在,更新、删除和获取工作正常,但唯一的问题是我无法创建另一个。 post.js
我认为新帖子的标题相同并且出现重复
【参考方案1】:
这个错误来自你的架构。你使用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)
【讨论】:
以上是关于无法创建新帖子 (API)的主要内容,如果未能解决你的问题,请参考以下文章
CouchDB/Sofa:无法使用保存按钮创建新帖子(从默认模板)
Wordpress 5.4。 REST API通过子弹无法工作