Как добавить несколько моделей в мангуст? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу обновить / перевести в режим множественный мангуст с одной полезной нагрузкой. Например. У меня есть VolSchema, CaseSchema и JudgeSchema. Я хотел бы выдвигать значения в VolSchema и JudgeSchema всякий раз, когда создается новый Case. Уже работает нормально, когда я обновляю только VolSchema, но когда я добавляю JudgeSchema, я обновляю только модель Judge без модели Vol.

Модель / Cases.js

const mongoose = require("mongoose");
const CasesSchema = new mongoose.Schema({
title: String,
vol: { type: mongoose.Schema.Types.ObjectId, ref: "Vol", required: 
true },
judges: [{ type: mongoose.Schema.Types.ObjectId, ref: "Judge" }],
});

module.exports = mongoose.model("Cases", CasesSchema)

Модели / Vol.js

const mongoose = require("mongoose");
const VolSchema = new mongoose.Schema({
vol_no: {
    type: String,
    unique: true,
    uppercase: false,
},

cases: [{ type: mongoose.Schema.Types.ObjectId, ref: "Cases" }],
createdAt: {
    type: Date,
    default: Date.now,
},
});

module.exports = mongoose.model("Vol", VolSchema);

Модели / Judge.js

const mongoose = require("mongoose");

const JudgeSchema = new mongoose.Schema({
name: String,
bio: String,
cases: [{ type: mongoose.Schema.Types.ObjectId, ref: "Cases" }],
});

module.exports = mongoose.model("Judge", JudgeSchema);

resolvers.js

const Vol = require("../models/Vol");
const Case = require("../models/Cases");
const Judge = require("../models/Judge");

module.exports = {
Mutation: {
addCase: async (_, { title, volID, judgesID }) => {
  const newCase = await new Case({
    title: title,
    vol: volID,
    judges: judgesID,
  }).save();

  const newVol = Vol.updateOne(
    { _id: volID },
    { $push: { cases: newCase } },
    { new: true },
  );
 const judge =  Judge.updateOne(
    { _id: judgesID },
    { $push: { cases: { $each: [newCase], $position: 0 } } },
    { new: true },
  );

  return newVol, judge // Judge model gets updated only
  return newVol // Vol gets update only
  return{vol: newVol, judges: judge } // i have tried this too
 },
},
};

Я хотел бы выдвинуть newCase на Vol, а также на модели Judge

1 Ответ

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

Вот мой лучший ответ, так как я не уверен, что именно вы спрашиваете.

const Vol = require("../models/Vol");
const Case = require("../models/Cases");
const Judge = require("../models/Judge");

module.exports = {
Mutation: {
addCase: async (_, { title, volID, judgesID }) => {
  const newCase = await new Case({
    title: title,
    vol: volID,
    judges: judgesID,
  }).save();

  const newVol = Vol.updateOne(
    { _id: volID },
    { $push: { cases: newCase } },
    { new: true },
  );
 const judge =  Judge.updateOne(
    { _id: judgesID },
    { $push: { cases: { $each: [newCase], $position: 0 } } },
    { new: true },
  );

  return newVol, judge // Judge model gets updated only
  return newVol // Vol gets update only
  return{vol: newVol, judges: judge } // i have tried this too
 },
},
};

должно выглядеть так

const Vol = require("../models/Vol");
const Case = require("../models/Cases");
const Judge = require("../models/Judge");

module.exports = {
 Mutation: {
  addCase: async (_, { title, volID, judgesID }) => {
   const newCase = await new Case({
      title: title,
      vol: volID,
      judges: judgesID,
   }).save();

   const newVol = await Vol.updateOne(
      { _id: volID },
      { $push: { cases: newCase } },
      { new: true },
   );
   const judge = await Judge.updateOne(
     { _id: judgesID },
     { $push: { cases: { $each: [newCase], $position: 0 } } },
     { new: true },
   );

   return newCase;
  },
 },
};

Кроме того, поскольку это GraphQL, это поможет, еслиЯ знал тип возврата.Я думаю, что тип возвращаемого значения - это Case, а не newVol или судья.Так что в этом случае вы получите странные результаты, которые будут возвращать что-то отличное от случая.В этом случае последняя строка должна читаться как return newCase;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...