如何使用Express API在Mongoose中获得创建对象的返回

时间:2019-01-10 09:21:07

标签: node.js mongodb express mongoose

在我的快速api中,使用猫鼬,我使用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'
  })
}

}

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

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

  })

1 个答案:

答案 0 :(得分:0)

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'
    })
  }
}

您可以使用以下方式将猫鼬对象隐藏为JSON

user.toJson()

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

delete user.password;