Мангуст - Как определить 2 типа для поля в схеме - PullRequest
0 голосов
/ 10 апреля 2019

так в моей модели платежей.У меня есть поле цены, которое может принимать либо объект платежа (валюта, сумма), либо строку «БЕСПЛАТНО».Как мне определить это в модели.

т.е.

price: { currency: "USD", amount: "100.00"}

или

price: "FREE"

Итак, как мне определить это в моей модели, потому что это не 'т работа:

...
price: { currency: String, amount: String } || String
...

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать смешанную тип схемы,

new Schema({
ofMixed:    [Schema.Types.Mixed],
})

Но вы должны пометить его как измененный, как указано в документации

Так как это тип без схемы, вы можете изменить значение на что угодно иначе вам нравится, но Mongoose теряет возможность автоматического обнаружения и сохранения эти изменения. Чтобы сообщить Mongoose, что значение типа Mixed имеет изменилось, вам нужно вызвать doc.markModified (путь), передав путь к Смешанный тип, который вы только что изменили.

Вместо этого вы можете использовать schema.path () и изучить эту проблему mongoose , чтобы получить лучшее решение, чтобы избежать здесь типа mixed.

...