如何使用express api获取Mongoose中创建的对象的返回

Fáb*_*sen 4 mongoose mongodb node.js express

在我的 express api 中,使用 mongoose,我使用 User.create 在 api 上创建了一个新用户。我如何获得创建对象的返回值以包含在响应中?

我创建对象的方法是:

async store (req, res) {
const { name, lastName, email, password } = req.body

if (await User.findOne({ email })) {
  return res.status(400).json({ error: 'User already exists' })
}

try {
  await User.create({
    name,
    lastName,
    email,
    password,
    role: 'USER_ROLE'
  })

  res.status(201).json({
    ok: true,
    message: 'User created'
  })
} catch (e) {
  res.status(500).json({
    ok: false,
    message: 'Failed to create User'
  })
}
Run Code Online (Sandbox Code Playgroud)

}

我想返回在 res 上创建的用户,例如:

 res.status(201).json({
    ok: true,
    message: 'User created',
    user: user

  })
Run Code Online (Sandbox Code Playgroud)

Nir*_*iya 6

async store(req, res) {
  const { name, lastName, email, password } = req.body

  if (await User.findOne({ email })) {
    return res.status(400).json({ error: 'User already exists' })
  }

  try {
    let user = await User.create({
      name,
      lastName,
      email,
      password,
      role: 'USER_ROLE'
    })
    user = user.toJson();
    delete user.password;
    delete user.role;
    res.status(201).json({
      ok: true,
      user: user,
      message: 'User created'
    })
  } catch (e) {
    res.status(500).json({
      ok: false,
      message: 'Failed to create User'
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用将猫鼬对象转换为 JSON

user.toJson()
Run Code Online (Sandbox Code Playgroud)

然后您可以删除不想发送到响应中的字段。

delete user.password;
Run Code Online (Sandbox Code Playgroud)