我使用Mean Stack并尝试在评论功能中发表评论,以便为博客文章工作。
我遇到的问题是试图从angular到mongo来更新给定博客的评论和评论评论。我基本上不知道如何使用angular / express / mongoose来使用子文档id或嵌套的子文档id来更新父博客或评论。
到目前为止我设法做的是:
创建我的架构 -
var mongoose = require('mongoose'), Schema = mongoose.Schema;
var childSchema = new Schema;
childSchema.add({
firstName: 'string',
lastName: 'string',
comment: 'string',
children: [childSchema]
});
var parentSchema = new Schema({
firstName: 'string',
lastName: 'string',
blog: 'string',
children: [childSchema]
});
var Parent = mongoose.model('Parent', parentSchema);
使用一些数据加载Mongo -
{
"firstName": "bobby",
"lastName": "edwards",
"blog": "this is blog 6",
"children": [
{
"firstName": "cat",
"lastName": "edwards",
"comment": "this is blog 6.1",
"children": [
{
"firstName": "dave",
"lastName": "edwards",
"comment": "this is blog 6.2",
"children": []
}]
}]
}
从mongo获取嵌套评论的所有博客并以角度正确显示 - 每个博客或评论都附有表格
返回单亲博客 -
创建父级博客 -
已更新
我设法降低了一级,但为此我必须将注释ID作为参数发送,修改快速路由并将findbyid的结果传递给results.comment.id({_ id:req.params.comment_id })。
节点应用
app.get('/parent/:post_id/:comment_id', postsController.single);
节点控制器
module.exports.single = function (req, res) {
console.log(req.params.post_id);
Parent.findById({ _id: req.params.post_id }, function (err, results) {
if (err) {
console.log(err);
}
var id = results.children.id({ _id: req.params.comment_id }); //function (err, commentresults) {
console.log('triggered 2');
console.log(id);
res.json([id]);
});
};
据说这是用于学习/测试的,如果我需要创建/返回/更新评论10级,我们无法看到它是如何工作的。
答案 0 :(得分:1)
从不同的角度来看,我的架构中只有两个可选字段topLevelCommentId
和commentOwnerId
。
无论何时插入注释,只要您将topLevelCommentId适当地设置为顶级父级,并将commentOwnerId设置为直接父级,您应该可以正确地嵌套注释。
答案 1 :(得分:1)
感谢您的反馈。我想我需要更好地了解MongoDB中的可能性。因此,我决定参加几个MongoDB大学课程。一个在开发方面,一个在操作方面。