На самом деле я хочу получить все данные после выполнения цикла for в базе данных. В коде req.body — это значения идентификатора объекта пользователя. Если сервер получает 3 значения идентификатора, он ответит 3 данных на внешний интерфейс. Нет вызова сервера 3 раза. Однако я не знаю, как сделать массив ответов, а затем отправить этот массив. Я не хочу звонить на сервер много раз. Пожалуйста, помогите мне.
exports.user_edit_mileage = (req, res ,next) =>{
console.info(req.body);
for(let user of req.body){
User.findById(user)
.then(users=>{
const response = {
users: users.map(user =>{
return {
email: user.email,
password: user.password,
name: user.name,
mileage: user.mileage,
};
})
};
res.status(200).json(response);
})
}
}
использовать это :
exports.user_edit_mileage = async(req, res ) =>{
let users = await User.find({_id: {$in: req.body}})
return res.send(users)
}
Подобно тому, что ответил бабак, но вам нужно будет выбрать поля, чтобы фрагмент делал именно то, что вы хотите, и опустить другие поля в пользовательском документе.
exports.user_edit_mileage = async (req, res) => {
const users = await User.find({ _id: { $in: req.body } })
.select({
email: 1,
password: 1,
name: 1,
mileage: 1
});
return res.send(users);
};
Стоит отметить, что вам никогда не следует отправлять password
в ответе, даже если он хеширован, поскольку это угроза безопасности.