У меня есть модель
const userSchema = Schema({
username: String
})
const invitationSchema = Schema({
decision: String,
user: {
type: Schema.ObjectId,
ref: 'User'
}
})
const groupSchema = Schema({
name: String,
invitations: [{
type: Schema.ObjectId,
ref: 'Invitation'
}]
})
Итак, базовая модель выглядит как
group {
name
invitations [
user {
username
}
]
}
Как пользователь, я хотел бы получить все группы, на которые у меня есть приглашения
const user = getContextUser()
Group.find({
'invitations.user': user._id
})
Но, похоже, это не сработает, я мог бы использовать группу свойств, ссылающуюся на схему Group
в модели Invitation
, но мне нужен подход с хорошим способом
Как получить все группы, на которые у пользователя есть приглашения
Не смотрите на это ниже, это моё фактическое представление модели в json, на всякий случай
// GROUP
{
"_id": ObjectId("5b3901dd9a8c0e6790af4ee8"),
"image": {
"filename": "8547aa2a-d16c-4da7-8d51-6c9bf8038037.jpg",
"width": 236,
"height": 156
},
"geolocation": {
"coordinates": [-152.1997, -24.7718],
"type": "Point"
},
"invitations": [
ObjectId("5b3901dd9a8c0e6790af4eea"),
ObjectId("5b3901dd9a8c0e6790af4eeb"),
ObjectId("5b3901dd9a8c0e6790af4eec"),
ObjectId("5b3901dd9a8c0e6790af4eed"),
ObjectId("5b3901dd9a8c0e6790af4eee"),
ObjectId("5b3901dd9a8c0e6790af4eef"),
ObjectId("5b3901dd9a8c0e6790af4ef0")
],
"messages": [],
"title": "id in magnam",
"description": "Cupiditate doloremque sunt placeat beatae et ex rerum nisi voluptate. Aliquam hic voluptas quas iure assumenda rerum aut. Quisquam vero beatae odit aut ut quod magnam.",
"created_at": ISODate("2018-07-01T16:31:25.237Z"),
"created_by": ObjectId("5b3901dc9a8c0e6790af4ee1"),
"color": "#347303",
"require_people_decision": true,
"is_public": true,
"start_date": ISODate("2019-03-18T20:05:03.116Z"),
"end_date": ISODate("2019-03-18T20:05:03.116Z"),
"location": "25498 Berniece Prairie",
"__v": 1
}
// INVITATION
{
"_id": ObjectId("5b3901dd9a8c0e6790af4eea"),
"created_at": ISODate("2018-07-01T16:31:25.348Z"),
"have_seen": false,
"user": ObjectId("5b3901dc9a8c0e6790af4ee0"),
"__v": 0
}
// USER
{
"_id": ObjectId("5b3901dc9a8c0e6790af4ee0"),
"avatar": {
"filename": "d438befb-2ea3-4582-b6bf-b8dd3b9bcf66.jpeg",
"width": 200,
"height": 200
},
"phone": "5556106679",
"password": "$2b$10$mbx9Yhj5mAKyVxwmxcumaepXYkCTiF/9VM2KJRARZkPOVN300pKc.",
"version": 1,
"friends": [],
"__v": 0
}