如何在 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 中进行循环,然后在猫鼬中发送响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬中进行原始 mongodb 操作?

如何使用各种参数在猫鼬中进行搜索查询?

如何在猫鼬中查询多个集合

如何在猫鼬中保存子文档的数组?

如何通过填充字段在猫鼬中查找文档?

如何通过填充字段在猫鼬中查找文档?