Как реализовать рецепты в mongodb (пн goose) - PullRequest
1 голос
/ 19 апреля 2020

Я хотел создать коктейль API на основе сервера nodejs с фоном mon goose db. API вернул бы коктейли с рецептом, у меня есть рабочий прототип со схемами коктейлей, пользователями и ингредиентами. У меня вопрос, как мне реализовать количество ингредиентов? Если я например. хотел бы использовать 2 мл ингредиента или 1 столовую ложку, как бы я реализовал это в своих схемах?

коктеил

const schema = new Schema({
    name: { type: String, required: true },
    recipe: {type: String, required: true },
    ingredients: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Ingredient'
    }],
    creator: {
        type: mongoose.Schema.Types.ObjectId,
        ref:'User'
    },
    createdDate: { type: Date, default: Date.now }
});

userschema

const schema = new Schema({
    username: { type: String, unique: true, required: true },
    hash: { type: String, required: true },
    email: { type: String, required: true },
    favoriteCocktails:[{
        type: Schema.Types.ObjectId,
        ref: "Cocktail"
    }],
    createdDate: { type: Date, default: Date.now }
});

ингридиентыschema

const schema = new Schema({
    name: { type: String, required: true },
    alcoholic: { type: Boolean, required: true },
    description: {type: String, required: false},
    createdDate: { type: Date, default: Date.now }
});

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

1 Ответ

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

Чтобы ввести количества для ваших ингредиентов, посмотрите на схему ингредиента.

const schema = new Schema({
    name: { type: String, required: true },
    alcoholic: { type: Boolean, required: true },
    description: {type: String, required: false},
    createdDate: { type: Date, default: Date.now }
});

У вас уже есть информация с именем, описанием ,coholi c, датой создания и т. Д. c. Добавляя поле для количества, например quantity: {type: String, required: false},, вы можете ввести желаемую информацию. В качестве альтернативы, если вы хотите, чтобы количество было целым числом, у вас может быть два поля: одно для количества (5) и одно для вида количества (столовые ложки)

РЕДАКТИРОВАТЬ

Чтобы уменьшить количество моделей ингредиентов, вы можете добавить информацию в гнездо на схеме коктейля при вводе ингредиентов. Вот так (под коктейльной схемой):

ingredients: [{
        ingredient: {type: mongoose.Schema.Types.ObjectId, ref: 'Ingredient'}
        quantity: {type: Number, required: false},
        quantityType: {type: String, required: false}
    }],
...