表达js将对象变量渲染到网页

时间:2018-03-28 23:22:06

标签: javascript node.js express

我有一个对象,我试图将其键和值变量打印到我的浏览器上。对象看起来像这样

{ data:
[ { type: 'product',
   name: 'test-prod-2018',
   slug: '1',
   description: 'This is a test Product',
  } ],
links:
{ current: 'https://example.com',
 first: 'https://tutorial.com',
 last: null },
meta:
{ results: { total: 1, all: 1 },
  } }

在我的app.js中,我正在使用

app.get('/', function(req, res) {
var title = Mystore.Products.All().then((products) => {
    console.log(products);
});

res.render('index', {
    title: title
});
});

在我的index.ejs中,我正在使用

<h1>
    <%= title %>
</h1>

这将打印到屏幕

[object Promise]

如果我想显示名称和描述,如何将对象的数据部分中的信息列在屏幕上?屏幕将显示

<h1><%= title:name %></h1>
<h1><%= title:description %></h1>

1 个答案:

答案 0 :(得分:0)

在看了一下你的问题之后好了,我想我明白你要做什么以及你目前在做什么。

您将title设置为等于then承诺的值,因为没有返回值(我不确定承诺是否可以实现您正在寻找的行为)

即使您只需要产品中的一个标题,目前数据库查询似乎返回所有产品,每个产品都有标题,名称等属性。因此,您需要将所有产品发送到前端并对其进行迭代,或查询一个特定产品并将其发送到前端。我也不确定product vs title命名空间是什么,所以我刚用product代替下面的示例代码

试试这个:

<强> index.js

app.get('/', function(req, res) {
    Mystore.Products.All().then((products) => {
        res.render('index', {
            products: products
        });
    });
});

<强> index.ejs

<% products.forEach(function(product) { %>
    <% for (key in product) %>
        <h1>Key: <%= key %></h1>
        <h2>Value: <%= product[key] %></h2>
    <% } %>
<% } %>