javascript - 不等于运算符不使用 Mongoose 中的 _id
问题描述
我想对用户进行简单的过滤,以便返回的用户数组不包含_id
我拥有的登录用户。我尝试将值传递string
或传递给字段,但根本没有应用该过滤器。我确信我通过了正确的。为什么这不起作用?ObjectId
$ne
_id
Query: {
users: async (parent, { limit = 10 }, { models, me }) => {
const filter = me
? { _id: { $ne: mongoose.Types.ObjectId(me.id) } }
: {};
return await models.User.find(filter, null, {
limit,
});
},
me
价值:
{
id: '5e36eb8232c4082080f8288a',
email: 'email0@email.com',
username: 'user0',
role: 'ADMIN',
iat: 1580657981,
exp: 1580675981
}
用户采集样本:
[
{
followersIds: [
5e36ffe2c1d67534241968e7,
5e36ffe2c1d67534241968ea,
5e36ffe2c1d67534241968ed,
5e36ffe2c1d67534241968f0,
5e36ffe2c1d67534241968f3,
5e36ffe2c1d67534241968f6,
5e36ffe2c1d67534241968f9,
5e36ffe2c1d67534241968fc,
5e36ffe2c1d67534241968ff
],
followingIds: [],
_id: 5e36ffe2c1d67534241968e4,
username: 'user0',
email: 'email0@email.com',
password: '$2a$10$vWAeJJ1blfCJOyAVrAN7c.a5e9HOFyU21GfQCkvbNTD3uC0lMgkta',
name: 'Mrs. Fae Koelpin',
bio: 'Repellat qui laudantium sed illum non corrupti optio. Sed perspiciatis ipsa nobis placeat tempore exercitationem rerum.
Aut cupiditate omnis provident maxime reprehenderit laudantium.',
avatarId: 5e36ffe2c1d67534241968e2,
coverId: 5e36ffe2c1d67534241968e3,
role: 'ADMIN',
__v: 0
},
{
followersIds: [],
followingIds: [ 5e36ffe2c1d67534241968e4 ],
_id: 5e36ffe2c1d67534241968e7,
username: 'user1',
email: 'email1@email.com',
password: '$2a$10$enruHkMUkcw07T.vgxeEQ.BV0rJ7xKO7HwVYsqYRlM2Cl7y1oaLEa',
name: 'Rasheed Hickle',
bio: 'Distinctio dolorem asperiores deserunt debitis aut quia. Aut deleniti ea sit qui aliquid aperiam accusantium repellendus. Ut ut non nulla vel fugiat dolore.',
avatarId: 5e36ffe2c1d67534241968e5,
coverId: 5e36ffe2c1d67534241968e6,
__v: 0
},
{
followersIds: [],
followingIds: [ 5e36ffe2c1d67534241968e4 ],
_id: 5e36ffe2c1d67534241968ea,
username: 'user2',
email: 'email2@email.com',
password: '$2a$10$juU/iUHy8g1vqBXmZplP8uiR75BPNm9ZfOoTpbzzEvhzNARRBFpKe',
name: 'Jillian Kassulke',
bio: 'Consequuntur molestiae repellat alias ut quis. Voluptas qui consectetur sed numquam fugit. Illo repellendus sint.',
avatarId: 5e36ffe2c1d67534241968e8,
coverId: 5e36ffe2c1d67534241968e9,
__v: 0
}
]
解决方案
假设“我”是一个包含当前用户信息的对象。因此尝试仅me.id
在过滤器中使用。
{ _id: { $ne: me.id } }
或者
{ _id: { $ne: ObjectId(me.id) } }
推荐阅读
- php - 如果验证方法使用 Laravel 失败,如何重定向回来
- powershell - PowerShell - 用重复行扩展数组中的数组列
- node.js - xpath 使用命名空间查询根元素
- python-3.x - 如何获得图像的一阶和二阶导数矩阵
- jackson - 使用内部类转换为嵌套的 pojo 类
- microservices - 仅在发送这些其他消息时触发消息事件
- c++ - 使用返回的模板参数创建对象失败,为什么?
- azure-data-factory-2 - 如果跳过笔记本执行,Azure 数据工厂管道将失败
- github - 为什么托管 .NET 应用程序的 GitHub 无法正常工作
- netlogo - 如何清除指挥中心的输出部分。?