node.js - 我不希望它返回数据库的 _id
问题描述
我正在创建一个登录页面,如果该人成功登录它会从数据库返回用户信息,但我希望它不返回_id
数据库分配的信息,有人知道该怎么做。
功能码
function userSearch(req, res) {
const user = req.params.userId
console.log(user)
User.findOne({ user }, (err, user) => {
if (err) {
res.status(500).send({
message: 'A ocurrido un error ' + err + '',
status: 500
})
} else if (!user) {
res.status(404).send({
message: 'No se a encontrado al usuario'
})
} else {
res.status(200).send({
user
})
}
})
}
解决方案
您可以使用$projection
它只返回您想要的值。
只是在您说的查询中添加一个新对象:{_id: 0}
。
像这样:
db.collection.find({},
{
_id: 0,
})
检查这个我没有显示_id
和的例子field2
。
所以在你的情况下将是这样的:
User.findOne({user}, {_id:0}, (err, user) =>{
//...
})
另外,如果您不想返回另一个字段作为密码或类似的东西,您只需添加到projection
.
User.findOne({user}, {_id:0, pass:0}, (err, user) =>{
//...
})
等等,你想要多少个字段。
推荐阅读
- java - Java,如何找出哪个类或方法占用大量内存?
- javascript - 如何在 Angular js 1 中获取 ng-repeat 项目计数?
- javascript - 视频出现在窗口中间时如何播放?
- node.js - 在 socket.io 上,我是否总是必须对每个 emit() 进行身份验证,而不仅仅是在建立连接时进行身份验证?
- c++ - SDL_Texture 似乎在运行时更改为 NULL,导致 EXC_BAD_ACCESS
- c++ - 在数组中创建位置层次结构
- extjs - ext.net 1 - 如何根据后面代码中的行数据构造div元素ID
- android - 导航架构不使用单个 Activity
- php - 将文件放在子文件夹中到谷歌驱动器使用 laravel
- vb.net - msvsmon.exe 未在 Windows IOT 上运行