Я начинаю изучать стек MEAN, и я пытаюсь создать базовый форум, чтобы ознакомиться с этим стеком. До сих пор я получил все, чтобы работать, кроме суб-суб-документов. У меня возникли проблемы с CRUD в комментариях в сообщениях по темам. Я уже много раз искал и ничего не выглядел точно, как мне нужно. Итак, мой вопрос: как бы вы это реализовали? Я знаю, что есть несколько способов сделать это, например, использовать ссылки вместо суб-документов, но, видя, что я уже написал код для таких вещей, как темы CRUD и сообщения CRUD в рамках тем, используя поддоку, я бы скорее, не использовать refs, если мне придется вернуться и изменить свой код.Выполнение CRUD на суб-суб-документах с использованием mongoose
var express = require('express');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;
var uri = "...";
mongoose.connect(uri);
var CommentSchema = new Schema({
id: ObjectId,
content: String,
author: UserSchema
});
var PostSchema = new Schema({
id: ObjectId,
title: String,
author: UserSchema,
comments: [CommentSchema]
});
var TopicSchema = new Schema({
id: ObjectId,
title: String,
moderator: UserSchema,
posts: [PostSchema]
});
var Topic = mongoose.model('Topic', TopicSchema);
var app = express();
app.delete('/topics/:topicId/posts/:postId/comments/:commentId', function(req, res) {
//What goes here?
});
app.put('/topics/:topicId/posts/:postId/comments/:commentId', function(req, res) {
//What goes here?
});
app.post('/topics/:topicId/posts/:postId/comments/:commentId', function(req, res) {
//What goes here?
});
app.get('/topics/:topicId/posts/:postId/comments/:commentId', function(req, res) {
//What goes here?
});
Спасибо! Я закончил использовать этот код ... – MarkieMoose
app.put ('/ topics /: topicId/posts /: postId/comments /: commentId', requireLogin, function (req, res) { var topicId = req.params.topicId var postId = req.params.postId; var commentId = req.params.commentId; User.findOne ({"email": req.session.user.email}, function (err, user) { if (user.role == "user" || user.role == "admin") { Тема.findById (topicId, function (err, topic) { topic.posts.id (postId) .comments.id (commentId) .content = req.body.content; topic.save (function (err) { if (err) console.log (err); res.status (204) .end(); }); }) } }); }); – MarkieMoose
Тем не менее, я думаю, что последний пример, который вы дали, кажется самым изящным и простым (и, вероятно, эффективным) способом сделать это, поэтому я, вероятно, изменюсь, чтобы использовать это вместо этого. – MarkieMoose