При сохранении родительских и дочерних объектов в Mon goose он сохраняет ссылку на родительский объект, но родительский объект не сохраняет ссылку на дочерний элемент. - PullRequest
0 голосов
/ 10 июля 2020

Короче говоря, проблема заключается в том, что я использую Mon goose с приведенным ниже кодом для создания и сохранения записей db в родительской схеме 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. Код ниже

Ниже приведена схема родительского объекта ie Blogpost 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);

Ниже приведена схема дочернего объекта ie Связанный комментарий 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 в блог, а его дочерний элемент тоже как blogpost._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);
            });
        } 
    }

1 Ответ

0 голосов
/ 10 июля 2020

Ну, я решил это, и способ, которым я решил это, использует код ниже

const blogpost = new Blogpost( {...db_object_dict, _id: new mongoose.Types.ObjectId()} )
blogpost.save(function (err, blogpost) { // passed blogpost as well in arguments
    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);
            });
            // new added line
            blogpost.relatedcomments.push(relatedcomment._id)
        }
        // new added line
        blogpost.save() 
    }

На самом деле моя ошибка заключалась в том, что я не нажимал relatedcomment._id (дочерний идентификатор) в массиве blogpost.relatedcomments, и затем сохраните его. Готово и моя проблема решена.

...