无法创建新帖子 (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通过子弹无法工作

使用 Dynamics CRM Web API 创建帖子

为啥不使用 NodeJS 中的 API 就无法获取所有 Instagram 帖子

新共享、地理定位状态和 API

无法使用 Az DevOps Pipelines API 6.0-preview.1 创建新的管道