繁体   English   中英

使用 mongoose 从 mongodb 获取 object

[英]GET an object from mongodb using mongoose

问题可能很简单,但我凌晨 2 点的大脑无法理解发生了什么。 我正在尝试创建一个显示基本公共信息的个人资料页面。 我试图让它工作的方式是在通过他的特定_id注册帐户时从 mongodb 中提取用户用户名。 如果需要,我使用的验证是 JWT。

app.post('/api/user-profile', async (req,res) => {
  const { token } = req.body

  if(!token) {
      return res.json({ status: 'error', error: 'not logged in' })
  }

  try {
      const user = jwt.verify(token, JWT_SECRET)
      const userid = user.id
   
      const result = User.findOne({ userid })

      console.log(result)
      // return res.json({ status: 'ok', name: result })
  } catch(error) {
      // return res.json({ status: 'error', error: 'something went wrong' })
      console.log(error)
  }
})

我不确定我应该使用什么 function, findOne()findById() 我试图查看 mongoose 的文档,但解释对我来说有点难以理解。

PS用户=用户注册model。 如果需要,我可以粘贴代码。

我对 mongoose 没有太多经验,但与 Mongo 合作过很多。 findOne 是 Mongo 的 findOne function 的直接对应方,它接收格式为 {"key": "expectedValue"} 的查询。 如果您想使用它通过 id 获取数据,查询是 {"_id": user.id}。

因为通过 id 获取数据是一种常见的情况,所以 lib 添加了 findByID 方法,它接收一个 ID,然后格式化查询并内部调用 findOne。

如果userid_id则使用findById而不是findOne并在查询之前使用await ,所以这样做:

const result = await User.findById(userid)

如果你想使用 findOne:

const result = await User.findOne({"_id" : userid})

如果你想要一个普通的 object javascript 在这样的查询后使用.toObject

const result = await User.findById(userid).toObject()
console.log(result)

对于任何有兴趣的人来说,答案就像 Mohammad Yaser Ahmadi 所说的那样。 一切正常,通过获取用户名我做了:

const user = jwt.verify(token, JWT_SECRET)
const userid = user.id

const result = await User.findById(userid)

const usersName = result.username

console.log(usersName)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM