Как заполнить документ, вложенный в массив объектов в Mon goose? - PullRequest
2 голосов
/ 26 апреля 2020

Я хочу заполнить список ингредиентов. Можно ли вернуть массив с полем заполненных ингредиентов? Как я могу это сделать, если мне нужен только один объект из списка ингредиентов с заполненным ингредиентом?

Надеюсь, вы поможете :)

Моя схема выглядит следующим образом:

export const RecipeSchema = new Schema({
  name: {
    type: String,
    required: 'Enter a name',
  },
  ingredientsList: [
    {
      ingredient: {
        type: Schema.Types.ObjectId,
        ref: 'Ingredient',
      },
      value: {
        type: Number,
        default: 1,
      },
    },
  ],
});

Моя модель ингредиента выглядит так:

export const IngredientSchema = new Schema({
  name: {
    type: String,
    required: 'Enter a name',
  },

  created_date: {
    type: Date,
    default: Date.now,
  },
  amount: {
    type: Number,
    default: 1,
  },
});

1 Ответ

1 голос
/ 28 апреля 2020

Как поле, ingredientsList, это массив ссылочных документов из коллекции Ingredient - вы можете использовать model.populate() следующим образом:

const recipes = await Recipe.find().populate('ingredientsList');

res.send({ data: orders });

Это вернет все Recipes и также разверните или заполните ingredientsList для каждого.

Допустим, вы хотели заполнить только поле name каждого документа в ingredientsList - вы делаете это следующим образом:

const recipes = await Recipe.find().populate('ingredientsList', 'name');

res.send({ data: orders });

Это вернет все Recipes, но заполнит только поле name в ingredientsList для каждого.

Пн goose документы по населению

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