Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

361
Visualizações
¿Cómo guardar en Mongoose con await?

El siguiente código funciona, pero me gustaría usar solo async/await , por lo que mi pregunta es: ¿Cómo puedo convertir

 cat.save().then(() => console.log('Saved in db'));

en usar await en su lugar?

La razón por la que tengo mongoose.connection.once() es solo para enviar comandos cuando MongoDB está conectado. si esto pudiera usar await también, entonces sería realmente genial =)

 import mongoose from 'mongoose';
import { connectDb } from './modules/connectDb';
const { Schema } = mongoose;
const catSchema = new Schema({ name: String });
 
(async () => {
 connectDb('testDB');

 mongoose.connection.once('open', () => {
 console.log('MongoDB is connected');

 mongoose.connection.db.listCollections().toArray(function (err, names) {
 console.log(names);
 });

 const catModel = mongoose.model('testColl', catSchema);

 const cat = new catModel({ name: 'Zildjian' });
 cat.save().then(() => console.log('Saved in db'));
 });
})();

conectarDb.ts

 import mongoose from 'mongoose';
import { strict as assert } from 'assert';
import { readToml } from './readToml';

const db = readToml('./config/database.toml');

export function connectDb(
 database: string = db.database,
 uri: string = db.uri,
 username: string = db.username,
 password: string = db.password,
) {
 assert(typeof uri === 'string');
 assert(typeof database === 'string');
 assert(typeof username === 'string');
 assert(typeof password === 'string');

 const URI = `mongodb+srv://${username}:${password}@${uri}/${database}?retryWrites=true&w=majority`;

 try {
 mongoose.connect(URI);
 } catch (err) {
 console.error(err);
 }
}
almost 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Pruebe el siguiente código y asegúrese de que la función contenga una word clave en espera que siempre debe tener una función asíncrona (la word clave asíncrona debe usarse antes del nombre de la función). Pero en su caso, la función de devolución de llamada ya está definida como función asíncrona.

Simplemente cambie la parte de ahorro solo a abajo, está listo para comenzar.

 try {
 const catModel = mongoose.model('testColl', catSchema);
 const cat = new catModel({ name: 'Zildjian' });
 const response = await cat.save(); // if error while saving, catch will get executed
 console.log(response); // saved record
 // return success response 
} catch (err) {
 console.log('err' + err);
 // return error response
}
almost 4 years ago · Santiago Trujillo Relatório

0

Primero debe hacer que connectDB sea asíncrono y luego deshacerse de mongoose.connection.once() ya que, de lo contrario, necesitaría que todo su código Mongoose estuviera allí.

 main().catch((err) => console.log(err));

async function main() {
 await connectDb('testDB');

 const catSchema = new mongoose.Schema({ name: String });
 const catDocument = mongoose.model('testColl', catSchema);

 const catObj = new catDocument({ name: 'Zildjian' });
 await catObj.save();
}

conectar DB

 import mongoose from 'mongoose';
import { strict as assert } from 'assert';
import { readToml } from './readToml';

const db = readToml('./config/database.toml');

export async function connectDb(
 database: string = db.database,
 uri: string = db.uri,
 username: string = db.username,
 password: string = db.password,
) {
 assert(typeof uri === 'string');
 assert(typeof database === 'string');
 assert(typeof username === 'string');
 assert(typeof password === 'string');

 const URI = `mongodb+srv://${username}:${password}@${uri}/${database}?retryWrites=true&w=majority`;

 const options = {
 bufferCommands: false,
 autoCreate: false,
 };

 try {
 await mongoose.connect(URI, options);
 } catch (err: any) {
 throw err.message;
 }
}
almost 4 years ago · Santiago Trujillo Relatório

0

Para usar await , debe proporcionar una promesa para esperar. cat.save() devuelve una promesa, por lo que debería funcionar. Sin embargo, solo puede usar await en la función asíncrona, por lo que también debe declarar la función de devolución de llamada para el evento abierto como asíncrono:

 (async () => {
 connectDb('testDB');

 mongoose.connection.once('open', async () => {
 console.log('MongoDB is connected');

 mongoose.connection.db.listCollections().toArray(function (err, names) {
 console.log(names);
 });

 const catModel = mongoose.model('testColl', catSchema);

 const cat = new catModel({ name: 'Zildjian' });
 await cat.save();
 console.log('Saved in db');
 });
})();
almost 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda