【问题标题】:display data from mongodb to webpage将数据从 mongodb 显示到网页
【发布时间】:2019-11-10 19:27:05
【问题描述】:

我是 nodejs 的新手,想使用 express 和 nodejs 连接 mongo 数据库。我希望我的数据从数据库显示到网页。

///// 模型架构///////

import mongoose from 'mongoose';

const Schema=mongoose.Schema;

let Data=new Schema({     
    learningEvents:{
        type:String
    },
    learningActivities:{
        type:Array
    },
    indicators:{
        type:Array
    }
});

export default mongoose.model('Data', Data);

///////////////////////////////////////////////////////////////////p>

import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';

import Data from './models/data';

import mongoose from 'mongoose';
import data from './models/data';

const app=express();
const router=express.Router();

app.use(cors());
app.use(bodyParser.json());

mongoose.connect('mongodb://localhost:27017/data');
const connection=mongoose.connection;

connection.once('open',()=>{
    console.log("Mongodb connected successfully");
});

router.route('/').get((req,res)=>{

        res.send('Hello');

    });

router.route('/data').get((req,res)=>{
    Data.find((err,Data)=>{
        if(err)
        console.log(err);
        else
        res.json(Data);

    });
});

app.use('/',router);

app.listen(4000,()=>console.log('Express server is running on port 4000'));

【问题讨论】:

  • 这不是你的问题,但如果Data 是你的模型,那么回调的参数也不是Data。将其称为其他名称,以免影响您的模型变量。

标签: node.js mongodb express


【解决方案1】:

要向网页显示动态数据,您需要使用 ejs 车把等模板引擎。您不能对 html 做同样的事情:

    blog.find({}, function(err, blogs){
        if(err){
            console.log("An Error Occured");
            console.log(err);
        }
        else{
            res.render("index",{blogs: blogs});
        }
    });

其中 index 是一个 ejs 文件,我们将所有博客数据传递给它。这可以在 ejs 模板中呈现,如

<% blogs.forEach(function(blog){ %>
    <div class = "ui top attached segment">
    <div class = "ui huge header"><%= blog.title %></div>
    <div>
        <div class = "item">
            <img class = "ui centered image"src = "<%= blog.image %>"></img>
        </div>
        <div class = "description">
            <p><%- blog.body.substring(0, 400) %></p>
        </div>
        <a href = "/blogs/<%= blog._id %>">Read More</a>
        <br>
        <div class = "item">
            <span><%= blog.created.toDateString() %></span>
        </div>
        </div>
        <hr>
        </div>
<% }); %>

链接到 ejs Docs

【讨论】:

  • 但我必须从 mongodb 读取数据而不是随机数据。我提到了数据库的图片。
  • 你得到了一个例子,而不是你的确切解决方案。
  • @MatihUllah 我提到的代码向您展示了如何在前端动态呈现。 “blogs”是我们在 mongoose 模型上查询“find”时得到的数据。在你的情况下,你必须对你的“数据”做同样的事情
  • 我的猫鼬模型有问题。如何根据上图的数据库在node js中定义模型
猜你喜欢
  • 1970-01-01
  • 2018-07-18
  • 2023-04-03
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多