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

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

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 Report

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 Report

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 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!