ReferenceError:产品未定义

时间:2018-09-03 11:19:35

标签: node.js ejs

我正在尝试获取数据,但是当我进行控制台操作时,我正在获取数据,但是在渲染时它无法在前端工作,因此未定义其显示产品。

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>
        <% } %>

2 个答案:

答案 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 });
    });
});