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

171
Vistas
Mongoose deleteMany() está eliminando un futuro create()

Aquí está mi guión completo:

 import path from 'path' import mongoose from 'mongoose' import dotenv from 'dotenv' import { SiteConfigModel } from '../src/feature/site-config/model' import { siteConfigData } from '../data/siteConfigData' import { UserModel } from '../src/auth/model/UserModel' import { userData } from '../data/userData' const configPath = path.join(__dirname, '..', '.env.local') dotenv.config({ path: configPath }) const MONGO_URI = process.env.MONGO_URI || 'MISSING' console.log(`Using mongo URI: ${MONGO_URI}`) const mongoConnect = async () => { console.log('Attempting mongo connection...') const { connection: { host }, } = await mongoose.connect(MONGO_URI) console.log(`MongoDB Connected: ${host}`) } const importSiteConfig = async () => { try { await SiteConfigModel.deleteMany() await SiteConfigModel.create(siteConfigData) console.log('Data imported!') process.exit(0) } catch (error) { console.error(error) process.exit(1) } } const importUsers = async () => { try { await UserModel.deleteMany() await UserModel.create(userData) } catch (error) { console.error(error) process.exit(1) } } mongoConnect() importSiteConfig() importUsers()

Cuando lo ejecuto con ts-node ./scripts/seeder.ts , la colección de usuarios está vacía. Sin embargo, si hago una pequeña modificación:

 const importUsers = async () => { try { // await UserModel.deleteMany() // DELETE THIS LINE await UserModel.create(userData) } catch (error) { console.error(error) process.exit(1) } }

Entonces hay dos registros en la base de datos.

No espero este resultado, porque deleteMany() viene antes que create(). ¿Cómo es que esto está ocurriendo?

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

0

prueba esto:

 const importSiteConfig = async () => { try { await SiteConfigModel.deleteMany() await SiteConfigModel.create(siteConfigData) console.log('Data imported!') } catch (error) { console.error(error) // or throw error } } const importUsers = async () => { try { await UserModel.deleteMany() await UserModel.create(userData) } catch (error) { console.error(error) // or throw error } } (async()=> { try{ await mongoConnect() await importSiteConfig() await importUsers() process.exit(0) }catch(e){ process.exit(1) } })()

Actualizado:

Como pruebo en mi entorno:

Estructura del proyecto:

ingrese la descripción de la imagen aquí

En mi node.ts tengo lo siguiente:

 const mongoose = require("mongoose"); const { Schema } = mongoose; const SiteConfigSchema = new Schema({ config1: Boolean, config2: Boolean, }); const UserModelShema = new Schema({ name: String, }); const configModel = mongoose.model("config", SiteConfigSchema); const userModel = mongoose.model("user", UserModelShema); const mongoConnect = async () => { console.log("Attempting mongo connection..."); const { connection: { host }, } = await mongoose.connect(`mongodb://localhost:27017/testdb`); console.log(`MongoDB Connected: ${host}`); }; const importSiteConfig = async () => { try { await configModel.deleteMany(); await configModel.create({ config1: true, config2: false }); console.log("config Data imported!"); } catch (error) { console.error(error); // or throw error } }; const importUsers = async () => { try { await userModel.deleteMany(); await userModel.create([{ name: "user 1" }, { name: "user 2" }]); console.log("user Data imported!"); } catch (error) { console.error(error); // or throw error } }; (async () => { try { await mongoConnect(); await importSiteConfig(); await importUsers(); process.exit(0); } catch (e) { process.exit(1); } })();

paquete.json:

 { "name": "test", "version": "1.0.0", "main": "node.ts", "license": "MIT", "scripts": { "seeder": "npx ts-node node.ts" }, "dependencies": { "mongoose": "^6.3.0", "typescript": "^4.6.3" } }
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