首页 > 解决方案 > 从 MongoDb 获取数据并插入文件

问题描述

我构建了下一个文件:

var express = require('express');
var app = express();
app.set("view engine", "ejs");

app.use("/", function(request, response){
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  var dbo = db.db("Test");
    dbo.collection("users").findOne({},function(err, result) {
    if (err) throw err;
    console.log(result);
    var name = result.name;
    response.render('index',{ name});
    db.close();
  });
});
});
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="./index.js"></script>
    <title>Document</title>
</head>
<body>
    <h1 class="result"><%=name %></h1>
<script>
</script>
</body>
</html>

我从我的数据库中获取用户的名字:MongoDb,然后插入它 <h1 class="result"><%=name %></h1>。如何从数据库中获取所有名称?现在我只得到第一个。

标签: node.jsmongodb

解决方案


因此,据我所知,问题是您想获取集合 users 中所有用户的名字。如果那是您想要实现的目标。也许我们应该首先了解为什么我们只获得一个用户。这很可能是因为方法。

dbo.collection("users").findOne({},function(err, result) {});

顾名思义,findOne 将只返回一个与作为方法 findOne 的第一个参数给出的条件相匹配的对象,在我们的例子中就是 {}。所以,在我们的例子中,它将返回用户集合中的第一个用户。要获取所有用户的列表,只需将 findOne 更改为简单地查找。在我们的情况下,这将是:

dbo.collection("users").find({},function(err, result) {});


推荐阅读