удалить элемент массива с помощью remove () не работает? - PullRequest
0 голосов
/ 12 июля 2020

Я использовал приведенный ниже код в своем API для удаления элемента из массива

deleteCommentLike: async(req, res) => {
        const { error } = createComLikeValidation(req.body);

        if (!error) {
            const { user_id, comment_id } = req.body;

            //   const likeModel = new likeSchemaModel({user_id: user_id, post_id: post_id});
            await commentlikeSchemaModel
                .find({ user_id: user_id, comment_id: comment_id })
                .remove();
            let commenttData = await commentSchemaModel.findById(comment_id);
            console.log(commenttData.usersLiked);

            commenttData.likes = --commenttData.likes;
            commenttData.usersLiked.remove(user_id);
            await commenttData.save();

            res.status(200).json({ error: false, data: "done" });
        } else {
            let detail = error.details[0].message;
            res.send({ error: true, data: detail });
        }
    },

Здесь не работает эта одна строка: commenttData.usersLiked.remove(user_id);. Это не дает никаких ошибок, но user_id не удаляется из моей базы данных.

"use strict";
const mongoose = require('mongoose');
const Joi = require('joi');

var commentSchema = mongoose.Schema({
    //other data
    usersLiked: [{
        type: mongoose.Types.ObjectId,
        default: []
    }],
    //other data
}
var commentSchemaModel = mongoose.model('comments', commentSchema);
module.exports = {
    commentSchemaModel,
}

В моем mongodb это выглядит так, как показано ниже

введите описание изображения здесь

Я уже пробовал использовать его как commenttData.usersLiked.remove(mongoose.Types.ObjectId('user_id'));, но результат тот же.

В чем может быть причина этого и как я могу удалить значение из массива?

1 Ответ

0 голосов
/ 12 июля 2020

Вы должны использовать операцию update :

commenttData.update({_id: mongoose.Types.ObjectId("5f099..")}, {$set: {usersLiked: yourUpdatedUsersLikedArray}})

Ошибка, которую вы ожидаете от remove (), отсутствует, поскольку вы запускаете js n oop, который просто игнорируется компилятором.

Mon goose не реализует операцию обновления атрибута так, как вы ее используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...