, поэтому я пытаюсь создать простую систему Thumbs Up для приложения, над которым я работаю, но у меня возникают проблемы с переносом идентификатора пользователя в массив likes
.Вот как выглядит мой код:
Схема помещения
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const classroomSchema = Schema({
clName: String,
clPosts: [{
title: String,
mssg: String,
date: String,
imageurl: String,
HERE==> likes: [{type: Schema.Types.ObjectId, ref: 'User'}]
}]
})
const Classroom = mongoose.model('Classroom', classroomSchema)
module.exports = Classroom
router
router.put('/put/classroom/post/like/:id', (req, res, next) => {
var data = data = req.body
Classroom.findByIdAndUpdate(
{
_id: req.params.id,
"clPosts": { _id: data.post }
},
{ $push: { "clPosts.$[outer].likes": [data.user] } },
{ "arrayFilters": [{ "outer._id": data.post }] }
).then((room) => {
console.log("Done");
res.json(room);
}).catch(next)
})
Я попробовал следовать другим советам здесь на SO, но я не уверенесли я что-то настроил неправильно или есть лучший способ поместить объект во вложенный массив.
Базовая настройка - это Коллекция Классов, содержащая Объекты Классов.в классе есть posts
массив объектов, а внутри - likes
массив.Идея заключается в том, что всякий раз, когда кому-то нравится пост, он сохраняет ObjectID этого пользователя в массиве, который я затем использую, чтобы подсчитать, сколько лайков и т. Д.MongoDB не имеет хорошей документации по вложенным массивам.