我正在尝试获取数据,但是当我进行控制台操作时,我正在获取数据,但是在渲染时它无法在前端工作,因此未定义其显示产品。
app.get('/profile/profile/dashboard/update/:id',function (req,res,next) {
//console.log("hello "+req.params.id);
Product.findOne({_id: req.params.id}).then(product=>{
console.log("hello check please "+ product);
});
res.render('update.ejs',{ product: product });
});
update.ejs文件
<% if (product._id) { %>
<tbody>
<td><input type="text" value="<%= product.name %>" required></td>
<td><input type="text" value="" required></td>
<td><input type="text" value="" required></td>
<td><input type="text" value="" required></td>
<td><input type="submit" class="btn btn-danger" value="submit"></td>
</tbody>
<% } %>
答案 0 :(得分:1)
问题是您试图在findOne完成之前呈现数据。 findOne
是异步功能,因此该日志对您有用。
在res.render
范围内移动then
:
Product.findOne({_id: req.params.id}).then(product=>{
console.log("hello check please "+ product);
res.render('update.ejs',{ product: product });
});
答案 1 :(得分:0)
是的,您的代码存在问题,就是将渲染置于“查找一种”方法之外。将其放在牙套之内。
app.get('/profile/profile/dashboard/update/:id',function (req,res,next) {
//console.log("hello "+req.params.id);
Product.findOne({_id: req.params.id}).then(product=>{
console.log("hello india "+ product);
res.render('update.ejs',{ product: product });
});
});