我正在建立一个网站,使人们可以书写便签并将其打印在屏幕上。我想将粘滞便笺存储在mongoDB中,该数据库具有一个名为stickyNotes的数据库和一个名为stickyNotes的集合,该集合当前有两个文档。
我有一个名为stickyNotes的变量,它想从数据库上的stickyNotes集合中获取文档,但是当我使用mongodb库中的collection.find.toArray
将文档以异步方式输入到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}`);
});
答案 0 :(得分:0)
可以尝试:
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
});