如何在Mongoose的Model.find()中使用res.render()?

时间:2018-07-15 22:12:48

标签: node.js mongodb mongoose

我试图在每个循环的Handlebars内部渲染Mongoose模型。据我所知,应该在find查询中调用res.render(),但这不起作用。该页面永远不会加载,并最终以ERR_EMPTY_RESPONSE结尾。

我通常是Mongoose和Node.js的新手,对于任何明显的疏忽,我深表歉意。

这是发出请求的主文件。

{'temp1': {1, 2, 3, 4, 5}, 'temp2': {15, 16, 17}}

猫鼬模型。

var express = require('express');
var mongoose = require('mongoose');
var router = express.Router();

var Product = require('../models/product.js');

router.get('/shop', (req, res) => {
  Product.find((err, product) => {
    res.render('shop.hbs', {
      title: 'Shop',
      products: product
    });
  });
});

种子文件。

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var schema = new Schema({
  description: {type: String, required: true},
});

module.exports = mongoose.model('Product', schema);

我要在其中渲染模型的简化车把文件。

var mongoose = require('mongoose');

var Product = require('../models/product');

var products = [
  new Product({
    description: 'Example 1',
  }),
  new Product({
    description: 'Example 2',
  })
];

mongoose.connect('mongodb://localhost:27017/products', {useNewUrlParser: true});

var done = 0;

for (var i = 0; i < products.length; i++) {
  products[i].save((err, result) => {
    done++;
    if (done === products.length) {
      exit();
    }
  });
}

var exit = () => {
  mongoose.disconnect();
};

1 个答案:

答案 0 :(得分:1)

我不认为您对Product.find()使用的语法正确,第一个参数应该是您的搜索表达式。如果您想要所有产品,则可以传递一个空对象:

  Product.find({}, (err, products) => {
        // Your rendering logic
  });