Я использовал приведенный ниже код в своем 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'));
, но результат тот же.
В чем может быть причина этого и как я могу удалить значение из массива?