【问题标题】:backend shop. Showing certain products后端商店。显示某些产品
【发布时间】:2022-08-22 16:26:45
【问题描述】:

我是后端新手,我对商店如何加载(例如)20 种产品感到困惑,然后当您单击下一页时,您会获得另外 20 种新产品。我正在将 nodejs 与 mongoose 和 ejs 一起使用,所以如果有人可以提交一个带有解释的示例,我会非常感谢它!但只有解释也行!提前致谢! (我真的不知道如何用谷歌搜索这个问题的答案,所以这就是我在这里的原因!)

    标签: node.js mongoose backend ejs


    【解决方案1】:

    基本上,您需要先将产品详细信息存储在集合中。您可以通过在 admin 路由上添加一个表单来完成此操作。要存储图像,如果您使用 express,您可以使用名为 express-fileupload 的中间件,然后在您的 app.js 文件中 var fileupload = require("express-fileupload"); 然后您可以通过 app.use(fileupload()); 在您的 app.js 文件中注册中间件

    为了在此处保存图像,我将图像存储在服务器本身中,但不建议这样做。您想用连接重命名图像。例如 mongo 文档插入 id 。这将真正帮助您轻松循环产品 我将向您展示如何将数据从表单添加到数据库并使用 mongo id 存储图像的示例。

    router.post('/add-products', (req, res) => {
    let datainsert = req.body,
    db.get().collection('products').insertOne(datainsert).then((data) => {
        let id = data.insertedId
        let image = req.files.image
        image.mv('./public/images/product-images/' + id + '.jpg', (err) => {
            if (!err) {
               console.log("document added and image saved)
                res.redirect('/')
            } else {
                console.log("err" + err);
            }
        })
    })
    

    现在您的产品将被添加到 db 并且图像将存储在 server 中。 要查看产品,您基本上可以遍历文档

    希望对您有所帮助,如果您遇到任何错误或疑问,请随时回复。谢谢 !

    【讨论】:

    • 太感谢了!但是我怎样才能在数据库中只加载我的 20 个产品,然后当用户访问下一页时,我想再加载 20 个尚未显示的产品?例如,如果我的 mongo 数据库中有 40 个产品,那么我希望第一页显示数据库中的前 20 个产品,然后我希望下一页显示数据库中的其他 20 个产品?
    【解决方案2】:

    我刚刚想通了。我可以隐藏所有产品,然后将它们存储在一个数组中,并使用此代码在每次查询参数“page”上升时仅在列表中显示 5 个新产品。这是代码:(它有点笨拙,但它可以完成工作,它可能会帮助那些正在寻找与我相同答案的人!快乐编码!

    function getQueryVariable(variable) {
      let query = window.location.search.substring(1);
      let pageNum = query.split("=")[1];
      return pageNum * 5;
    }
    let pageNum = getQueryVariable("page");
    
    let namn = [];
    let namnAttSamla = document.getElementsByClassName("namn");
    for (let i = 0; i < namnAttSamla.length; i++) {
      namn.push(namnAttSamla[i].innerText);
    }
    
    for (let i = pageNum++; i < pageNum + 4; i++) {
      console.log(namnAttSamla[i].innerText, "index:", i);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      相关资源
      最近更新 更多