javascript - 如果一个人属于一个团队,MongoDB 的总回报
问题描述
团队:
const teamSchema = new Schema({
name: {
type: String,
index: true,
trim: true
},
owner: {
type: Schema.ObjectId,
ref: 'User',
required: true
},
description: {
type: String,
index: true,
trim: true
}
}, { timestamps: true })
成员:
const memberSchema = new Schema({
id_team: {
type: Schema.ObjectId,
ref: 'Team',
required: true
},
id_user: {
type: Schema.ObjectId,
ref: 'User',
required: true
},
role: {
type: String,
enum: roles,
default: 'user'
}
}, { timestamps: true })
const id_user = '6eiri59fdd0d8a2jfiff7nfnf'
return Team.aggregate([
{
$lookup: {
from: 'members',
localField: '_id',
foreignField: 'id_team',
as: 'members'
}
},
{
$project: {
name: 1,
owner: 1,
description: 1,
membersCount: { $size: '$members' },
isUserInTeam: { // <- problem
$in: [
id_user,
'$members.id_user'
]
}
}
}
]).then((teams) => ({
count: teams.length,
rows: teams
})).then(notFound(res))
.then(success(res))
.catch(next)
如果特定用户(id_user
字符串类型)是否属于团队,我有以下代码应该返回我。
但我没有成功,它总是返回错误。
我也尝试了以下方法,但没有任何效果。
你能帮我个忙吗?
$in: [
ObjectId(id_user),
ObjectId('$members.id_user')
]
$in: [
new ObjectId(id_user),
new ObjectId('$members.id_user')
]
const objectId = require('mongoose').Types.ObjectId
$in: [
objectId(id_user),
objectId('$members.id_user')
]
解决方案
推荐阅读
- javascript - 如何展开 JSON 对象并合并相似的键?
- wagtail - 使用钩子将图标附加到 Wagtail 的 RichTextEditor 中的链接
- amazon-web-services - 选择 EKS 节点实例类型的原因是什么?
- github - Github 中受保护分支的规则冲突
- python - Load dll compiled by cygwin in python3
- angular - 功能模块中的清晰设计问题
- node.js - How can I access CLI options passed to test from inside a test suite
- mongodb - bitnami mongodb shard timeout reached before the port went into state "inuse"
- python-3.x - ModuleNotFoundError with python transformers library despite it being installed in venv when running invoke task
- excel - Extracting Data from several Excel files in a folder and adding them in a active Table in a master worksheet