Я пытаюсь получить пользователя из своей коллекции с помощью 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.info(user.name, user.password);
if (user.name === undefined)
return res.status(400).send({ message: "User not found" });
const dbpassword = user.password;
где мой console.info возвращает значение undefined
В БД:
Мой почтовый запрос почтальона:
const user = Userdb.findOne({name: name});
должно быть const user = await Userdb.findOne({name: name});
. Это асинхронная операция.
Проверьте свой запрос тела и убедитесь, что у вас есть данные в коллекции БД с этим условием. Если данные коллекции не совпадают с запросом, мангуст вернет вам неопределенное значение.
И вы должны создать асинхронную функцию и использовать ожидание для получения данных, а затем зарегистрировать это
const user = await Userdb.findOne({name: name});
Получили ли вы значение
name
в Node.JS. Если нет, в Postman выберите raw (переключатель), затем выберите JSON и со значением{ "name": "rio", "password": "rio" }
.