Mongodb FindOne возвращает объект с неопределенным свойством

Я пытаюсь получить пользователя из своей коллекции с помощью findOne, используя его атрибут имени, но он возвращает неопределенное значение, тогда как мой пользователь находится в базе данных.

Это моя схема:

var schema = new mongoose.Schema({
  name: {
    type: String,
    required: [true, "Please enter a name"],
    maxlength: 32,
  },
  password: {
    type: String,
    required: true,
    minlength: [6, "Password must be at least 6 characters"],
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  isAdmin: {
    type: Boolean,
    default: false,
  },
});

const Userdb = mongoose.model("userdb", schema);

module.exports = Userdb;

И вот где я пытаюсь получить своего пользователя:

const name = req.body.name;
  const password = req.body.password;
  const user = Userdb.findOne({name: name});
  // console.log(user.name, user.password);
  if (user.name === undefined)
    return res.status(400).send({ message: "User not found" });

  const dbpassword = user.password;

где мой console.log возвращает значение undefined

В БД:

Mongodb FindOne возвращает объект с неопределенным свойством

Мой почтовый запрос почтальона:

Mongodb FindOne возвращает объект с неопределенным свойством

Получили ли вы значение name в Node.JS. Если нет, в Postman выберите raw (переключатель), затем выберите JSON и со значением { "name": "rio", "password": "rio" }.

Yong Shun 10.04.2022 14:47
const user = Userdb.findOne({name: name}); должно быть const user = await Userdb.findOne({name: name});. Это асинхронная операция.
Lakshya Thakur 10.04.2022 14:47
Получение данных из формы с помощью JavaScript - краткое руководство
Получение данных из формы с помощью JavaScript - краткое руководство
Получить данные из формы с помощью JS очень просто: вы запрашиваете элемент формы, передаете его конструктору new FormData() и, наконец, получаете...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
0
2
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проверьте свой запрос тела и убедитесь, что у вас есть данные в коллекции БД с этим условием. Если данные коллекции не совпадают с запросом, мангуст вернет вам неопределенное значение.

  • Отправьте запрос в необработанном режиме и установите тип Json для отправки запроса

Как это

И вы должны создать асинхронную функцию и использовать ожидание для получения данных, а затем зарегистрировать это

const user = await Userdb.findOne({name: name});

Другие вопросы по теме