@depressionofoleg

Как получить данные из mongoDB из коллекции во внешнюю переменную?

Добрый день. Начал постигать базы данных в nodejs. Возник вопрос. Как записать данные во внешнюю переменную, чтобы в последующем уже обрабатывать ее и отправлять на фронт.

const MongoClient = require("mongodb").MongoClient;


let variableArr = [];
const mongoClient = new MongoClient(url, { useUnifiedTopology: true });
 
mongoClient.connect(function(err, client){
      
    const db = client.db("variabledb");
    const collection = db.collection("variables");
 
    if(err) return console.log(err);
      
    collection.find().toArray(function(err, results){
        
        results.forEach(item => variableArr.push(item))
        client.close();
    });

console.log(variableArr); // Выдает также пустой массив


Понимаю, что проблема кроется в асинхронности, но вот точно не могу понять, как можно исправить данную проблему.
Спасибо!
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
bodrych
@bodrych
dev
https://docs.mongodb.com/drivers/node/usage-exampl...
const { MongoClient } = require("mongodb");
// Replace the uri string with your MongoDB deployment's connection string.
const uri =
  "mongodb+srv://<user>:<password>@<cluster-url>?writeConcern=majority";
const client = new MongoClient(uri);
async function run() {
  try {
    await client.connect();
    const database = client.db("sample_mflix");
    const movies = database.collection("movies");
    // Query for a movie that has the title 'The Room'
    const query = { title: "The Room" };
    const options = {
      // sort matched documents in descending order by rating
      sort: { rating: -1 },
      // Include only the `title` and `imdb` fields in the returned document
      projection: { _id: 0, title: 1, imdb: 1 },
    };
    const movie = await movies.findOne(query, options);
    // since this method returns the matched document, not a cursor, print it directly
    console.log(movie);
  } finally {
    await client.close();
  }
}
run().catch(console.dir);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы