Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

361
Views
¿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 answers
Answer question

0

Puede generar su propia identificación y guardarla

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

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!