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

254
Vistas
¿Cómo generar una identificación única para cada entrada en mongoDB?

¿Cómo genero una identificación única para cada entrada en mi mongoDB a través de Postman?

Ejecuto postman POST con http://localhost:8000/api/user/store y envío

 { "name":"testname", "email":"testemail@test.com", "phone":"testnumber", "city":"testcity", }

Esto se guarda en mi mongoDB y muestra esto en mi brújula mongoDB

 _id:61f7e48f0c651345677b7775 name:"testname" email:"testemail@test.com" phone:"testnumber" city:"testcity" __v:0

¿Cómo puedo generar una ID única y agregarla entre este proceso para que se guarde de esta manera?

 _id:61f7e48f0c651345677b7775 uniqueID:68465135 name:"testname" email:"testemail@test.com" phone:"testnumber" city:"testcity" __v:0

Mi modelo userData.js se ve así:

 const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ name: { type: String, required: true }, email: { type: String, required: true }, phone: { type: String, required: true }, city: { type: String, required: true }, }, { timeStamps: true }) const User = mongoose.model('User', userSchema); //export model to use in other files module.exports = User;

Este es el fragmento de UserController.js sobre cómo se guardan los datos

 // Saves user to the database const store = (req, res, next) => { let user = new User({ name: req.body.name, email: req.body.email, phone: req.body.phone, city: req.body.city, }) user.save() .then(response => { res.json({ message: 'User added successfully!' }) }) .catch(error => { res.json({ message: 'An error occured!' }) }) }

El ID único puede ser cualquier cosa que acabo de agregar numérico como ejemplo. Pero tiene que ser único. ¿Cómo puedo hacer esto? Cualquier sugerencia sería útil.

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

0

Hasta donde yo sé, _id ( ObjectId ) ya es único, y si desea proporcionar su propio _id , solo necesita configurarlo en la entidad.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar _id de MongoDB, ya que siempre será único. Si no le gusta el formato de MongoDB _id , puede cambiarlo a nanoid .


Modelo

Con nuevo campo de uniqueId

 import { nanoid } from 'nanoid'; const UserSchema = new mongoose.Schema({ name: string, uniqueId: { type: String, required: true, default: () => nanoid(7), index: { unique: true }, }, email: String, phone: String, city: String, })

También puede sobrescribir _id con nanoid para que no cree un campo adicional en su esquema

 import { nanoid } from 'nanoid'; const UserSchema = new mongoose.Schema({ _id: { type: String, default: () => nanoid(), }, name: string, email: String, phone: String, city: String, })

Controlador

 // Saves user to the database const store = async (req, res, next) => { const { name, email, phone, city} = req.body; try { let user = new User({ name, email, phone, city, }); const savedUser = await user.save(); return res.json({ message: 'User added successfully!', }); } catch (error) { console.log(error) return res.json({ message: 'An error occured!', }); } };
about 4 years ago · Juan Pablo Isaza Denunciar

0

El controlador javascript mongodb ya tiene UUID :

 db.foo.insert( {x: new UUID()} ); db.foo.aggregate([ {$project: {x:true, x_type: {$type: "$x"}}} ]); { "_id" : ObjectId("61f81af6a565bb368b38e345"), "x" : UUID("b639a8b5-2598-429f-92e0-630c6b5bfbdc"), "x_type" : "binData" }

Si no le gusta el objeto UUID real, capture su representante de cadena. Tenga en cuenta que, lamentablemente, toString() en el objeto no 892ab869-3339-41b3-a612-5c29871f4e57 sino todo el UUID("892ab869-3339-41b3-a612-5c29871f4e57") , por lo que debe substr :

 db.foo.insert( {x: (new UUID()).toString().substr(6,36) }); db.foo.aggregate([ {$project: {x:true, x_type: {$type: "$x"}}} ]); { "_id" : ObjectId("61f81b56a565bb368b38e348"), "x" : "d5af9fb4-768c-4e17-b69a-8bcd80f8bf1e", "x_type" : "string" }

O, para simplificar, puede usar el método hex() :

 db.foo.insert( {x: (new UUID()).hex() } ); db.foo.aggregate([ {$project: {x:true, x_type: {$type: "$x"}}} ]); { "_id" : ObjectId("61f81ba9a565bb368b38e34e"), "x" : "b9810abea4344932b3da15f7f0d58e2c", // note the dashes went away "x_type" : "string" }

En todos los casos, el controlador, NO el servidor, creará un _id único si no se proporciona. La creación de una identificación única que no esté vinculada a la base de datos (por ejemplo _id ) puede ser valiosa al integrar y mover datos (compárelo con mover ROWID fuera de Oracle en un CSV; no es muy útil). NOTA: El tipo generado predeterminado para _id es ObjectId , que es un tipo en BSON y no está necesariamente vinculado a MongoDB. Dicho esto, UUID es aún más una "clave de máquina/DB" en comparación con una clave comercial familiar que se puede hacer única.

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