Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
¿Cuál es el punto de usar save() en Mongoose?

Estoy aprendiendo MongoDB y Mongoose, y he visto a los instructores recomendar usar la función save() para guardar los cambios realizados en la base de datos.

Pero todavía estoy haciendo cambios con éxito sin usar save(). Hice dos funciones para agregar un documento a la base de datos, una usando save() y la segunda sin usar save(), y todas hicieron el mismo trabajo.

Entonces, ¿cuál es el punto de usarlo entonces?

NOTA: he ocultado mi cadena de conexión

Mi código:

 const express = require('express'); const mongoose = require('mongoose'); //-- Connect to Database --//: mongoose.connect(); // make Schema & model: const Person = mongoose.model('Person', new mongoose.Schema({ name: String, age: Number })); //-- Interact with Database --//: async function run1 () { const person = await Person.create({name: 'John', age: 25}); await person.save(); console.log(person); } async function run2 () { const person = await Person.create({name: 'Sally', age: 40}); console.log(person); } run1(); run2();

Salida terminal:

 PS C:\Users\user\OneDrive\Desktop\Folders\Programming\Web Development\Web Development Projects\Database-Practice> node server { name: 'Sally', age: 40, _id: new ObjectId("61d20d852b1e59a6b21149b1"), __v: 0 } { name: 'John', age: 25, _id: new ObjectId("61d20d852b1e59a6b21149b0"), __v: 0 }

Imagen de mi base de datos después de ejecutar mi código:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los modelos Mongoose tienen una función create() que a menudo se usa para crear nuevos documentos.

 const User = mongoose.model('User', mongoose.Schema({ email: String })); const doc = await User.create({ email: 'bill@microsoft.com' }); doc.email; // 'bill@microsoft.com'

La función create() es un envoltorio delgado alrededor de la función save(). La llamada anterior a create() es equivalente a:

 const doc = new User({ email: 'bill@microsoft.com' }); await doc.save();

La razón más común para usar create() es que puede guardar convenientemente varios documentos con una sola llamada de función al pasar una matriz de objetos:

 const User = mongoose.model('User', mongoose.Schema({ email: String })); const docs = await User.create([ { email: 'sergey@google.com' }, { email: 'bill@microsoft.com' } ]); docs[0] instanceof User; // true docs[0].email; // 'sergey@google.com' docs[1].email; // 'bill@microsoft.com'
about 4 years ago · Juan Pablo Isaza Denunciar

0

De los documentos:

Acceso directo para guardar uno o más documentos en la base de datos. MyModel.create(docs) hace new MyModel(doc).save() para cada documento en docs.

Mirando lo que tienes, déjame señalar:

 async function run1 () { const person = await Person.create({name: 'John', age: 25}); await person.save(); // unnecessary 2nd call here console.log(person); }

Detrás de escena, su código se ejecutará como:

 async function run1 () { const person = await new Person({name: 'John', age: 25}).save(); await person.save(); // saving twice basically console.log(person); }

Lo que puede hacer es (esto es lo preferido por la mayoría):

 async function run1 () { const person = new Person({name: 'John', age: 25}); await person.save(); }

La razón es que hacerlo le da más control al guardar su documento. Por ejemplo, puede pasar el objeto de persona a cualquier función y guardarlo dentro de esa función sin requerir que el modelo esté en cualquier lugar donde exista esa función en su base de código.

 async function run1 () { const person = new Person({name: 'John', age: 25}); await doSth(person); // showing possibility, not a recommendation } // This function can exist anywhere, does not have to be in the same file async doSth(person){ // do some logging maybe // change some properties of the person maybe // slug-ify the persons name maybe await person.save(); }

Hacer esto le permite tener una mejor separación de preocupaciones . Aparte de eso, ambos producirán el mismo comportamiento y es más o menos una cuestión de preferencia . Pero el estándar actual en la comunidad va con el método .save() .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda