Задать вопрос
bro-dev
@bro-dev

Почему модель с полем Number, принимает и сохраняет туда строку?

Вот такая модель, пишем туда и в ид суем строку и базе потом записана именно строка
spoiler
new Schema({
    id: {
        type: Number,
        unique: true,
    }
});

дальше пытаюсь получить этот документ и не в какакую
spoiler
User.findOne({ id: 123}) 
User.findOne({ id: "123"})

оба этих запроса выдадут null, при этом если изначально записывать как цифру то норм ищет в обеих вариантах.
Как сделать строго чтобы только число писалось? , я думал что type: Number, достаточно, оказывается нет.
При этом если такие запросы делать через просто шел mongo то все норм работает, то есть User.findOne({ id: "123"}) находит а User.findOne({ id: 123}) нет, что общем то верно.
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
Tmch
@Tmch
Программист всего)
а не так User.findOne({ where: {id: 123}) ?
Ответ написан
@dmitrygavrish
Можете попробовать добавить валидацию mongoosejs.com/docs/validation.html:
new Schema({
    id: {
        type: Number,
        unique: true,
        validate: {
          validator: value => typeof value === 'number',
          message: 'Invalid id type'
        },
    }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы