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

356
Vistas
¿Cómo obtener la identificación de un documento incluso antes de guardarlo en mongoose?

Tengo un controlador simple que crea una publicación para un usuario. Otro esquema está vinculado a él. Cuando intento crear una nueva publicación, necesito obtener la identificación de la publicación para poder vincularla con otro esquema.

Aquí está el esquema:

 const mongoose = require("mongoose"); const User = require("./User"); const View = require("./View"); const ArticleSchema = new mongoose.Schema({ title: { type: String, required: true, trim: true, }, body: { type: String, required: true, }, status: { type: String, default: "public", enum: ["public", "private"], }, user: { type: mongoose.Schema.Types.ObjectId, ref: "User", }, views: { type: mongoose.Schema.Types.ObjectId, ref: "View", }, createdAt: { type: Date, default: Date.now, }, }); module.exports = mongoose.model("Article", ArticleSchema);

Está bien cuando quiero vincular el campo de usuario porque lo tengo almacenado en la memoria.

Pero el campo de vista requiere el postId de ese documento en particular. Y no puedo obtenerlo sin antes crear el documento.

Mi controlador de publicación de creación:

 module.exports.createArticleController = async function (req, res) { try { req.body.user = req.User._id; const article = await Article.create(req.body).exec() res.redirect(`/${article.title}/${article._id}`); } catch (e) { console.error(e); } };

Entonces mi pregunta es,

¿Cómo puedo obtener la identificación en el proceso de ejecución de model.create () para poder vincular la vista a esa identificación? Tal vez algo usando el operador this

No quiero usar la actualización después de crear.

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

0

Puede generar su propia identificación y guardarla

 ObjectId id = new ObjectId()
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede obtener los Id. de objeto justo después de crear una instancia de Modelo o crear sus propios Id. de objeto y guardarlos.

Así es como lo logré:

 module.exports.createArticleController = async function (req, res) { try { const instance = new Article(); instance.title = req.body.title; instance.body = req.body.body; instance.status = req.body.status; instance.user = req.User._id; instance.views = instance._id; const article = await instance.save(); if (article) { res.redirect(`/${article.title}/${article._id}`); } } catch (e) { console.error(e); } };

O puede crearlos y guardarlos en la base de datos.

 var mongoose = require('mongoose'); var myId = mongoose.Types.ObjectId(); const instance = new YourModel({_id: myId}) //use it

sigue leyendo

¿Cómo obtengo la identificación del objeto en mongoose después de guardarlo?

Formato y uso de Id. de objeto

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente puede crear un objeto de esquema como este:

 const task: TaskDocument = new this.taskSchema({ ...createTaskDto })

Esto es de uno de mis proyectos, ya que el ObjectId de MongoDB se basa en la máquina operativa y el momento en que se crea, no necesita la base de datos para generar la identificación. Ahora puede acceder a task._id para obtener su identificación sin guardarla.

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