首页 > 解决方案 > 如何返回 MongoDB 文档以表达路由?

问题描述

连接到我的数据库后,我可以从集合中获取我的文档,但我不确定我应该如何返回它并在路由中使用它。

var findDocuments = (db, callback) => {
  var collection = db.collection(category)

  collection.find({}).toArray((err, docs) => {
    console.log(docs);
    // return "docs" array
    callback;
  })
}


app.get("/route", (res, req) => {
  MongoClient.connect(url, (err, db) => {
    console.log("Connected successfully")
    findDocuments(db, () => {
      // I WANT TO RETURN THE "docs" ARRAY SO I CAN USE IT HERE
      // The ".render()" is for my templating engine
      // res.render('field', {field: docs});
      db.close();
    })
  }); 
})

我希望能够将“docs”数组传递给渲染,这样我就可以使用我的 ejs(嵌入式 JavaScript 模板引擎)模板上的信息。

标签: javascriptnode.jsmongodbexpressejs

解决方案


您可以在回调中接受 docs 变量,然后在调用时传递它们。此外,由于回调是在请求范围内定义的,因此您可以从那里访问响应方法

var findDocuments = (db, callback) => {
  var collection = db.collection(category)

  collection.find({}).toArray((err, docs) => {
    console.log(docs);
    // return "docs" array
    callback(docs);
  })
}


app.get("/route", (res, req) => {
  MongoClient.connect(url, (err, db) => {
    console.log("Connected successfully")
    findDocuments(db, (docs) => {
      res.render(docs)
      db.close();
    })
  });
}

推荐阅读