Узел JS MongoDB collection.find.toArray не возвращает значения - PullRequest
0 голосов
/ 06 июля 2019

Я создаю веб-сайт, который позволяет людям писать заметки и распечатывать их на экране. Я хочу хранить заметки внутри mongoDB с базой данных stickyNotes и коллекцией stickyNotes, которая в настоящее время содержит два документа.

У меня есть переменная stickyNotes, которая предполагает получение документов из коллекции stickyNotes на БД, но когда я использую collection.find.toArray из библиотеки mongodb для ввода документов в переменную stickyNotes асинхронным способом, она показывает пустое значение массива.

Это мой файл server.js:

const express = require("express");
const mongo = require("mongodb").MongoClient;
const app = express();

let stickyNotes = [];

//mongodb get all sticky notes
const mongoUrl = "mongodb://localhost:27017";
mongo.connect(mongoUrl, { useNewUrlParser: true }, async function(
  err,
  connection
) {
  if (err) {
    console.error(err);
  } else {
    console.log("Succesfully connected to the database");
    const db = connection.db("stickyNotes");
    const stickyNotesCollection = db.collection("stickyNotes");
    stickyNotes = await stickyNotesCollection.find({}).toArray();
  }
  connection.close();
});

console.log(stickyNotes);

app.use(express.static("./src/public"));

app.get("/sticky-notes", (req, res) => {
  console.log("Got a request for sticky notes");
  res.json(stickyNotes);
});

const port = 3000;
app.listen(port, () => {
  console.log(`App is running on port ${port}`);
});

1 Ответ

0 голосов
/ 06 июля 2019

Можно попробовать с:

stickyNotesCollection.find({}, (err, result) => {
    if (err) throw err;
    stickyNotes = result;
  });

или найти результат в массиве:

collection.find().toArray(function(err, result) {
    console.log(result);
});

или повторить:

collection.find().each(function(err, result) {
    //once result
});
...