@Devero97

Как обновлять данные между двумя коллекциями?

Подскажите, как можно обновлять вторую коллекцию, при обновлении первой? Создаю значит я тег, где мне пиходят след. данные:
const Tag = require("../models/tag.model");
const Category = require("../models/category.model");
const slugify = require("slugify");

module.exports.create = async (req, res) => {
  try {
    const tag = new Tag({
      slug: slugify(req.body.title),
      category: req.body.category,
      categories: req.body.categories,
      name: req.body.name,
      premium: req.body.premium,
      title: req.body.title,
      description: req.body.description
    });

    await tag.save();

    req.body.categories.forEach(async item => {
      const category = await Category.findById(item._id);
      category.tags.push(tag._id);
      await category.save();
    });

    res.status(201).json({ message: "Тег успешно создан" });
  } catch (e) {
    res.status(500).json({ message: "Произошла ошибка" });
  }
};


Схемы двух коллекций:
const { Schema, model } = require("mongoose");

const tagSchema = new Schema({
  title: {
    type: String,
    required: true
  },
  category: {
    type: String,
    required: true
  },
  slug: {
    type: String,
    required: true
  },
  name: {
    type: String,
    required: true
  },
  description: {
    type: String,
    required: true
  },
  premium: {
    type: Boolean
  },
  categories: [
    {
      ref: "categories",
      type: Schema.Types.ObjectId
    }
  ]
});

module.exports = model("tags", tagSchema);


const { Schema, model } = require("mongoose");

const categorieSchema = new Schema({
  name: {
    type: String,
    required: true
  },
  tags: [
    {
      type: Schema.Types.ObjectId,
      ref: "tags",
      default: []
    }
  ]
});

module.exports = model("categories", categorieSchema);


При создании я находил вторую коллекцию (категории) и добавлял айди тега в массив. Но при обновлении я не могу удалить или добавить к категориям айди этого тега. Как можно это сделать?
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы