findOneAndUpdate, кажется, удваивает мои $ в c count - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь опубликовать комментарий к своим сообщениям для моего приложения MERN, но я сталкиваюсь с проблемой, когда комментарий (Posts.findOneAndUpdate), кажется, публикует комментарии дважды. Я прочитал несколько постов на SO, в которых описана проблема, связанная с тем, как mon goose обрабатывает запросы, но я, должно быть, что-то упускаю.

Если кто-то может объяснить, что я делаю неправильно, я был бы очень признателен!

Маршрут, которым я пользуюсь:

router.post('/newReply/:id', async function(req, res) {
    const body = req.body

    if (!body) {
        return res.status(400).json({
            success: false,
            error: 'No text entered!',
        })
    }

    const reply = new Replies(body)
    if (!reply) {
        return res.status(400).json({ success: false, error: err })
    }

    await Posts.findOneAndUpdate(
        { _id: req.params.id },
        {
            "$inc": { "replies": 1 },
            "$push": { "comments": reply },
        },
        {
            new: true
        },
        (err) => {
            if (err) {
                return res.status(404).json({
                    success: false,
                    error: err,
                    message: 'Post not found!',
                })
            }
            return res.status(200).json({ 
                success: true,
                id: reply._id,
                message: 'Reply created!',
                reply: reply.reply,
                points: reply.points,
                createdAt: reply.createdAt
            })
        })
        .catch(err => console.log(err))
    })

Посты Модель

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

// Create Schema
const PostsSchema = new Schema({
  post: {
    type: String,
    required: true
  },
  points: {
    type: Number,
    default: 0
  },
  voters: {
    type: Array
  },
  upvotedBy: {
    type: Array
  },
  downvotedBy: {
    type: Array
  },
  createdAt: {
    type: Date,
    default: Date.now
  },
  replies: {
    type: Number,
    default: 0
  },
  comments: {
    type: Array
  },
  user_id: {
    type: 'string'
  },
  deleted: {
    type: Boolean,
    default: false
  }
});

module.exports = Posts = mongoose.model("posts", PostsSchema);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...