【问题标题】:How to get and display data from mongodb using nodejs after passing the parameter in the URL?在URL中传递参数后如何使用nodejs从mongodb获取和显示数据?
【发布时间】:2018-07-31 22:10:18
【问题描述】:

在URL中传递参数后,我只想在用户输入带有参数的URL时显示来自Mongodb的数据。

例如,如果 URL 是“http://www.example.com/product/1”,则应检索属于 id 值“1”的数据并显示在前端。

我已经编写了基于 id 显示数据的代码,但它没有显示结果,因为它有一些我无法找出的错误。

const express = require('express');
const app = express();
app.use(express.static('public'));
const ejs = require('ejs');
const bodyParser = require('body-parser')
app.set('view engine', 'ejs');
const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017";
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())


app.get('/product/:id', (req, res) => {
    var data = [
        {
            id: 1,

        },
        {
            id: 2,

        }
    ]
    data.forEach((product) => {

        if (product.id == req.params.id) {


            MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {

                if (err) throw err;
                var dbo = db.db('product')
                var cursor = dbo.collection('details').find();
                cursor.forEach((doc, err) => {
                    if (err) throw err;
                    data.push('doc');
                }, () => {
                    db.close();

                });
            });
            return true;

        }

    })
    res.render('productdetails',{title:"Product Details", product: data});

});

而html部分是

<h3><%= data.producttitle %></h3>

【问题讨论】:

    标签: node.js mongodb express parameters


    【解决方案1】:

    问题 1 - Find 方法是异步方法,这意味着您必须等待结果(使用 wait 或 then)

    问题 2 - 您将字符串推送到数据数组而不是数据本身。 你也可以避免使用另一个数组

    问题编号 3 - 您没有为查找指定任何过滤器

    const express = require('express');
    const app = express();
    app.use(express.static('public'));
    const ejs = require('ejs');
    const bodyParser = require('body-parser')
    app.set('view engine', 'ejs');
    const MongoClient = require('mongodb').MongoClient;
    const url = "mongodb://localhost:27017";
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    
    
    app.get('/product/:id', (req, res) => {
        MongoClient.connect(url, { useNewUrlParser: true }, (err, db) => {
        if (err) throw err;
        var dbo = db.db('product')
        dbo.collection('details').find({id : id}).toArray().then(products => {
        res.render('productdetails',{title:"Product Details", product: products[0]});}).catch(err => {throw err;});
    });
    

    【讨论】:

      猜你喜欢
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多