Я пытаюсь сохранить глубоко вложенный в другой документ, но после нескольких попыток я не могу это сделать - PullRequest
0 голосов
/ 08 июня 2019

Допустим, у меня есть эти две модели

// INSTALLATION MODEL
const InstallationSchema = new Schema({
  installrefno: { type: String },
 //I want to access and save only the serialno which is nested inside the products
  serialno: {
  type: mongoose.Schema.Types.ObjectId,
  ref: "Proreg"
  }
});
module.exports = InstallationDetails = mongoose.model(
  "Installation",
  InstallationSchema
);

// PROREG MODEL
const ProregSchema = new Schema({
  refno1: { type: String },
   products: [
    {
      oem: {
        type: Schema.Types.ObjectId,
        ref: "company"
      },
      category: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "productcategory"
      },
      subcategory: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "productsubcategory"
      },
      modelno: {
        type: String
      },
      serialno: {
        type: String,
        required: true
      }
      }
    }
  ],
});

module.exports = Proreg = mongoose.model(
  "Proreg",
  ProregSchema
);

Когда я создаю новую установку с этим кодом, он берет идентификатор Proreg, который, очевидно, будет но он также принимает весь спектр продуктов, которые идут вместе с ним.

//INSTALLATION CREATE ROUTE
router.post("/new",(req, res) => {
  const newInstall = new Install({
    installrefno: req.body.installrefno,
    serialno: req.body.proregid   //serialno: "A345"
  });

  newInstallationDetails
    .save()
    .then(installation => res.json(installation))
    .catch(err => res.json(err));
});

//RESULT
[
    {
        "_id": "5cfc53748fcc7b048043f555",
        "installrefno": "rererererererere",
        "serialno": {
            "_id": "5cf10fcc4cb6352abcfe094a",
            "refno1": "test2",
            "products": [
                {
                    "_id": "5cf10fea4cb6352abcfe094b",
                    "oem": "5cb6e026042460131454cf45",
                    "category": "5c960902e5cf3429e06beb6c",
                    "subcategory": "5ca35fbed6e1430df88954a6",
                    "modelno": "A123888",
                    "serialno": "A345"
                },
                {
                    "_id": "5cf10ffb4cb6352abcfe094c",
                    "oem": "5c986a1e9b6bc614b8a551b9",
                    "category": "5c960902e5cf3429e06beb6c",
                    "subcategory": "5ca35fbed6e1430df88954a6",
                    "modelno": "QW123",
                    "serialno": "B345"
                }
            ],
            "__v": 2
        },
        "__v": 0
    }
]

Я хочу иметь возможность выбрать только один продукт, скажем только "A345", как мне это сделать. Может кто-нибудь помочь мне, пожалуйста?

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