如何在 FindById 中进行循环,然后在猫鼬中发送响应?
Posted
技术标签:
【中文标题】如何在 FindById 中进行循环,然后在猫鼬中发送响应?【英文标题】:how to make for loop in FindById and then send response in mongoose? 【发布时间】:2021-03-21 19:47:39 【问题描述】:实际上我想在数据库中完成 for 循环后接收所有数据。在代码中,req.body 是用户的对象 id 值。如果服务器收到 3 个 id 值,它将向前端响应 3 个数据。没有呼叫服务器 3 次。但是,我不知道如何制作响应数组然后发送该数组。我不想多次调用服务器。请帮帮我。
exports.user_edit_mileage = (req, res ,next) =>
console.log(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);
)
【问题讨论】:
【参考方案1】:与 babak 的回答类似,但您需要选择字段以让 sn-p 完全按照您的意愿行事,并省略用户文档中的更多字段。
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
,即使它已经过哈希处理,因为它是一种安全威胁。
【讨论】:
【参考方案2】:使用这个:
exports.user_edit_mileage = async(req, res ) =>
let users = await User.find(_id: $in: req.body)
return res.send(users)
【讨论】:
以上是关于如何在 FindById 中进行循环,然后在猫鼬中发送响应?的主要内容,如果未能解决你的问题,请参考以下文章