我试图在每个循环的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();
};
答案 0 :(得分:1)
我不认为您对Product.find()使用的语法正确,第一个参数应该是您的搜索表达式。如果您想要所有产品,则可以传递一个空对象:
Product.find({}, (err, products) => {
// Your rendering logic
});