【问题标题】:submit query from index.ejs file to return a specific document from a mongodb collection从 index.ejs 文件提交查询以从 mongodb 集合返回特定文档
【发布时间】:2021-02-19 18:26:46
【问题描述】:

让我先承认我对 MongoDB 和 Node.js 都很陌生。我正在尝试在 mongodb atlas db 中查询集合中的特定记录。我能够获取整个文档列表,但在使用任何类型的参数时都遇到了麻烦。该集合有 350K+ 文档,因此在获取所有文档时呈现 index.ejs 文件需要很长时间。理想情况下,index.ejs 页面上有字段,用户可以在其中输入参数值并单击提交以查询数据库并返回一条记录。但现在,我只想让这个更简单的代码正常工作并对查询参数值进行硬编码。婴儿步骤:)

这是我正在使用的 server.js 代码。我假设 app.get 或类似的应该嵌入在 index.ejs 文件中,并且只在 server.js 代码中呈现 index.ejs 文件,但我没有任何运气。

const express = require('express');
const ejs = require('ejs');
const mongoose = require('mongoose');
const app = express();

app.set('view engine', 'ejs');

mongoose.connect('mongodb+srv://**********@*************/membershiptesting', { useNewUrlParser: true }, {useUnifiedTopology: true });

const memberSchema = {
       First: String,
       Last: String,
       email: String,
       PassAcct: String,
       ValidUntil: Date
    }
    
    const member = mongoose.model('passes',memberSchema);
    
    app.get('/', function (req, res) {
                member.find({},function(err, passes) {
                if (err) return next(err)
                res.render('index',{
                    passesList: passes
                })
            })
        })

app.listen(3000, function () {
    console.log('server is running')
});

这是 index.ejs 代码。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="Width=device-width, initial-scale=1">
        <title>Document</title>
    </head>    
    <h1>Members here</h1>
    <body>

        <%passesList.forEach(member => {%>
            <p><%= member.First %></p>
        <%})%>

    </body>
    
</html>

谢谢, 标记

【问题讨论】:

  • 你想用什么字段来查询数据库?

标签: javascript node.js mongodb ejs


【解决方案1】:

我想出了如何包含参数。我需要在 member.find 之后立即包含投影。我仍在尝试弄清楚如何将其包含在 index.ejs 文件中。

    app.get('/',function (req, res) {
                member.find({Email: 'someone@gmail.com' },function(err, passes) {
                if (err) return next(err)
                res.render('index',{
                    passesList: passes
                })
            })
        })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多