【发布时间】:2019-03-28 05:49:42
【问题描述】:
所以我正在尝试为我正在开发的应用程序做一个简单的 Thumbs Up 系统,但我在将用户 ID 推送到 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.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 没有关于嵌套数组的良好文档。
【问题讨论】:
标签: node.js angular mongodb express mongoose