У меня есть что-то вроде:мангуст исключить поле в массиве
Schema Subdocument
name: String
data: Mixed
Schema Stuff
documents: [Subdocument]
Теперь в моем API есть две конечные точки, одна для Subdocument
, а другой для Stuff
. Когда я хочу получить Subdocument
, мне нужно указать поле data
, но когда я хочу получить Stuff
, я хочу показать имя этих вложенных документов, но я не хочу показывать поле данных, потому что оно довольно велико и оно не будет использоваться.
Итак, чтобы все было ясно, данные не являются частными. Это просто, что я не хочу, чтобы это было показано, когда я получаю его от Stuff
Я попробовал, выполнив:
Stuff.findById(id)
.populate("documents")
.populate("-documents.data")
, но это не работает ... Я получаю Stuff
с Subdocument
, содержащий name
и data
. Я чувствую, что мне не хватает мангуста, когда я вызываю populate("-documents.data")
, что documents
- это массив, и я хочу исключить поле data
для каждого элемента в этом массиве.
Редактировать: К сожалению, схема, которую я предоставил, не для моего дела. В моем случае это не было заложено, но ссылка, например, так:
Schema Subdocument
name: String
data: Mixed
Schema Stuff
documents: [{
type: Schema.Types.ObjectId,
ref: 'Subdocument'
}]
Отлично, это работает. Я пробовал это раньше, но я редактировал findById() и вызывал метод getAll() из API для его проверки, поэтому я не видел никакого результата. Спасибо огромное! – olivarra1