如果我正在使用此功能,则会得到正确的响应。
router.get('/', function(req, res, next) {
var products = Product.find();
res.render('shop/index', { title: 'Shopping-Cart', products: products });
});
如果我使用以下功能,则我的本地服务器未给出任何响应并继续加载。
router.get('/', function(req, res, next) {
Product.find(function (err, docs){
res.render('shop/index', { title: 'Shopping-Cart', products: docs });
});
});
帮我解决这个问题。
答案 0 :(得分:0)
尝试一下。添加匹配对象以查找方法。
router.get('/', function(req, res, next) {
Product.find({}, function (err, docs){
res.render('shop/index', { title: 'Shopping-Cart', products: docs });
});
});
答案 1 :(得分:0)
第二个是完全错误的。这整个事情:
function (err, docs){
res.render('shop/index', { title: 'Shopping-Cart', products: docs });
}
被作为参数传递给find()
方法。这绝对没有意义
正确的是这样的:
Product.find().then(docs=>{
res.render('shop/index', { title: 'Shopping-Cart', products: docs })
}).catch(err=>console.log(err))
答案 2 :(得分:0)
由于您尚未指定正在使用的数据库,因此我假设与MongoDB类似。查找操作的第一个参数必须是查询对象(如果有)。 Documentation
因此,您可以通过以下任何一种方式来调整代码:
var products = await Product.find(); // Using async-await
res.render('shop/index', { title: 'Shopping-Cart', products: products });
Product.find({}, function(err, products) { // Using callbacks
res.render('shop/index', { title: 'Shopping-Card', products: products });
}
Product.find().then(function(products) { // Using Promises
res.render('shop/index', { title: 'Shopping-Card', products: products });
}