Вот что вы делаете прямо сейчас:
// Your code pushes body to the array doc.key1.key2
// Is that the behaviour you want?
const doc = {
key1: {
key2: []
}
}
const fields = ['key1', 'key2']
createNestedSubDoc(id, body, fields) {
return this.model.findById(id).then(doc => {
doc[fields[0]][fields[1]].push(body)
return doc.save()
})
}
Если число полей неизвестно, вы можете использовать lodash.pick
:
const _ = require('lodash')
createNestedSubDoc(id, body, fields) {
return this.model.findById(id).then(doc => {
const arrayPropertyInDoc = _.pick(doc, fields)
arrayPropertyInDoc.push(body)
return doc.save()
})
}
Если вы являетесь на самом деле попытайтесь сделать, это объединить фрагмент документа, содержащийся в body
, с определенной точкой в doc
, тогда pu sh не правильный метод.