express handlebars#每次渲染mongodb find()都会返回[object] [object]

问题描述 投票:1回答:1

我遇到一个问题,即我的模板未呈现从mongodb数据库发送回的任何内容。

我有以下路线和模板:

// Removing items page 
// --------------------------------------------------
router.post('/removeItems', (req, res) => {
   res.render('removeItems', {prods: crudOps.getProducts(res)})

});

<form action="/admin/removeItems" method="POST">
  <label for="item">ID</label>
        <input type="text" class = "form-control" name = "id" is= "id" >
</form>


<div>
    {{prods}}
</div>

<div class="container">
    {{#each prods}}
        <div class="form-group">
            <form action="/admin/removeItems" method="POST">
            <p>{{prods.name}}</p>
            <img height='70px' width='70px'>{{prods.file}}</img>
            <p>{{prods.value}}</p>
            <p>{{prods.desc}}</p>
            <p>{{prods._id}}</p>
            <button class="btn btn-primary btn-sm" type="submit" class = "form-control">Remove</button>
            </form>
        </div>
    {{/each}}
</div>

我的功能是从要处理原始操作的文件中导出的

const getProducts = function(res){
  MongoClient.connect('mongodb://localhost:27017', (err, client) => {
    if (err) {
      throw err;
    }
    let db = client.db('account-app');
    let products = db.collection('products');
    let users = db.collection('users');


       products.find().toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        return result
      })
      client.close()
  })
}

我的假设是,我的函数返回的任何内容都可以由传递给res.render的对象中的模板使用。我是否可能缺少一些索引索引键?还是我打错了mongo电话?我能够console.log返回的数据。

我的产品集中的所有文档都具有以下结构:

文件属性是图像文件。

name:"dd"
file:Binary('/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYICwgIyYn...', 0)
value:"dd"
desc:"dd

这是我第一次使用车把,但是一切对我来说看起来不错,我不确定丢失了什么?

node.js mongodb express handlebars.js
1个回答
0
投票

我误解了我的车把模板,我需要在正在渲染的每个div上放置{{@index}},然后使用this.name来引用我正在渲染的每个产品的名称

© www.soinside.com 2019 - 2024. All rights reserved.