В двух словах проблема заключается в том, что я использую Mongoose с приведенным ниже кодом для создания и сохранения записей БД в родительской схеме Blogpost
и в дочерней схеме Relatedcomment
, но когда я запрашиваю ее, _id родительского объекта отображается в дочернем объекте, но in the parent object no child shows up at all
. Другими словами the child knows who the parent is, but the parent doesnt know who is its child
. Пожалуйста, помогите мне, как добраться до дочернего объекта while querying parent object
. Код ниже
Ниже приведена схема родительского объекта, т.е. сообщение в блоге blogpost.js
.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BlogpostSchema = new mongoose.Schema({
_id: Schema.Types.ObjectId,
image:String,
title:String,
related_comments: [{ type: Schema.Types.ObjectId, ref: 'Relatedcomment' }],
});
mongoose.model('Blogpost', BlogpostSchema);
Ниже приведена схема дочернего объекта, т.е. Relatedcomment relatedcomment.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const RelatedcommentSchema = new mongoose.Schema({
blogpost: { type: Schema.Types.ObjectId, ref: 'Blogpost' },
user_name: String,
comment: String,
});
mongoose.model('Relatedcomment', RelatedcommentSchema);
Ниже показано, как я сохраняю родительский объект с дочерним объектом. Обратите внимание, что я передаю _id в сообщение в блоге, а также его дочерний элемент в качестве сообщения в блоге._id
require('../models/blogpost');
require('../models/relatedcomment');
const Blogpost = mongoose.model('Blogpost');
const Relatedcomment = mongoose.model('Relatedcomment');
// db_object_dict and child_db_object_dict are objects containing key value pairs according to their schemas
const blogpost = new Blogpost( {...db_object_dict, _id: new mongoose.Types.ObjectId()} )
blogpost.save(function (err) {
if (err) return handleError(err);
const related_child = new Relatedcomment( {...child_db_object_dict, blogpost: blogpost._id} )
related_child.save(function (err) {
if (err) return handleError(err);
});
}
}