Субдокумент в массиве сохраняется как пустой элемент массива, если при создании документа не указано значение - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу, чтобы конкретное поле в моей схеме было массивом с элементами в нем.

Когда я создаю рассматриваемый документ, у меня не будет элементов массива. Поэтому я ожидаю, что мой документ будет выглядеть так:

{
  notes: []
}

Проблема в том, что я получаю массив, который выглядит следующим образом:

{
  notes: ['']
}

Запрашивая notes.length, я получаю 1, что проблематично для меня, потому что это по сути пустой элемент массива.

Это код, с которым я работаю:

const SubDocumentSchema = function () {
  return new mongoose.Schema({
    content: {
      type: String,
      trim: true
    },
    date: {
      type: Date,
      default: Date.now
    }
  })
}

const DocumentSchema = new mongoose.Schema({
    notes: {
      type: [SubDocumentSchema()]
    }
});

const Document = mongooseConnection.model('DocumentSchema', DocumentSchema)
const t = new Document()

t.save()

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете указать пустой массив в качестве значения по умолчанию для заметок. И вам не нужно возвращать функцию для SubDocumentSchema. Попробуйте приведенный ниже отредактированный код.

const SubDocumentSchema = new mongoose.Schema({
  content: {
    type: String,
    trim: true
  },
  date: {
    type: Date,
    default: Date.now
  }
})

const DocumentSchema = new mongoose.Schema({
  notes: {
    type: [SubDocumentSchema],
    default: []
  }
});

const Document = mongooseConnection.model('DocumentSchema', DocumentSchema)
const t = new Document()

t.save()
...