Estaba teniendo algunos problemas para obtener una consulta en una matriz de tipo StockDocument. Para el contexto, aquí hay algunas declaraciones.
La definición de mi modelo/interfaz de stock:
const ticker = new mongoose.Schema({ ticker: String, Price: Number, Amount: Number, PastPrices: [{ time: Number, value: Number }] }); export interface StockDocument extends mongoose.Document { ticker: string, Price: number, Amount: number PastPrice:[{time:number, value: number}] } export const stock = mongoose.model<StockDocument>("Stocks", ticker);La consulta que estoy tratando de ejecutar:
let ArrayStocks : StockDocument[]; stock.find().sort({ Amount: -1 }).exec(function (err, docs){ // console.log(docs); console.log("Type of docs: " + typeof(docs)); ArrayStocks = docs; console.log("Type of ArrayStocks: " + typeof(ArrayStocks)); console.log(ArrayStocks); }); console.log("ArrayStocks outside of the loop: " + ArrayStocks); }Salida de la consola del código anterior:
ArrayStocks outside of the loop undefined Type of docs object Type of ArrayStocks object [ { _id: 61e61c2fcb0c149b8231b4ad, ticker: 'DOOB', Price: 1, Amount: 5, PastPrices: [ [Object] ], __v: 0 }, { _id: 61e61c3acb0c149b8231b4b1, ticker: 'GME', Price: 2, Amount: 4, PastPrices: [ [Object] ], __v: 0 }, { _id: 61e61c34cb0c149b8231b4af, ticker: 'BRUH', Price: 3, Amount: 3, PastPrices: [ [Object] ], __v: 0 } ]Como puede ver, por alguna razón puede imprimir la consulta pero no está definida fuera de ella, y no es una matriz de StockDocument como se supone que debe ser.
Quiero poder llamar a ArrayStocks[0].Amount, ArrayStocks[0].ticker, etc. fuera de esa función. Soy nuevo en la programación asíncrona, pero supongo que tiene algo que ver con eso, sin embargo, no sé cómo solucionarlo.