团队:
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')
]