Skip to content

Instantly share code, notes, and snippets.

@Uriel29
Last active January 28, 2022 02:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Uriel29/1fba5e4e10512500959e740f82a3a024 to your computer and use it in GitHub Desktop.
Save Uriel29/1fba5e4e10512500959e740f82a3a024 to your computer and use it in GitHub Desktop.
const listagem = new mongoose.Schema({
nome: { type: String, required: [true, 'Nome'] },
//lista:[{nome:String, sobrenome: String, numeroSerial: Number}],
lista:{type : Array,validate: v => Array.isArray(v) && v.length > 0},
});
const listagemModel = mongoose.model('listagem', listagem);
const edit = async docEdited => {
const {lista, _id, createdBy } = docEdited
const documento = await listagemModel.findOne({
_id,createdBy:mongoose.Types.ObjectId(userId)
})
// Dentro da lista de documento.lista
// [
// {nome:'Manuel', sobrenome:'marcopolo', numeroSerial:887]},
// {nome:'carlos', sobrenome:'grmald', numeroSerial:9999]},//numeroSerial antigo serial
// ]
//comparo a lista de docEdited com a do documento
//tudo que estiver diferente será atualizado
conts novaLista = [
{nome:'carlos', sobrenome:'grmald', numeroSerial:889889},//numeroSerial editado
{nome:'adicionado', sobrenome:'santes', numeroSerial:77} //novo campo
]
documento.lista = novaLista;
documento.markModified('lista')
//https://mongoosejs.com/docs/api/document.html#document_Document-markModified
const result await campanha.save()
console.log(result)
/// retorna tudo modificado
// OLHANDO NO BANCO NÃO ESTA SALVO
//olhando o log do mongoose tem apenas um $PUSH
//>> Mongoose: listagem.updateOne({ _id: new ObjectId("61f3544a4a9a7fe6d43eb75a") }, { '$push': { lista: { '$each': [ { nome: 'adicionado', sobrenome: 'santes', numeroSerial:77 } ] } }, '$unset': { qrCode: 1, boasVindasCheck: 1 }, '$set': { editadoEm: new Date("Fri, 28 Jan 2022 02:26:40 GMT") }, '$inc': { __v: 1 }}, { session: null })
// se trocar la em cima para isso > lista:[{nome:String, sobrenome: String, numeroSerial: Number}],
// sem mudar mais nenhuma virgula no código todo
//funciona da maneira correta
//>> Mongoose: listagem.updateOne({ _id: new ObjectId("61f35596face37347582e311"), __v: 0 }, { '$set': { lista: [ {nome:'carlos', sobrenome:'grmald', numeroSerial:889889, _id: new ObjectId("61f35596face37347582e312") }, { nome: 'carlos', sorenome: 'grmald', numeroSerial: 9999 , _id: new ObjectId("61f355a8face37347582e319") } ], textoBoasVindas: '\n', editadoEm: new Date("Fri, 28 Jan 2022 02:32:08 GMT") }, '$unset': { qrCode: 1, boasVindasCheck: 1 }, '$inc': { __v: 1 }}, { session: null })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment