试图让数据显示在表格中

时间:2015-12-07 04:47:23

标签: node.js express

我正在使用express和sequelize处理我的第一个节点项目,我不了解页面渲染的工作原理

我的一个模特(续集)中有以下功能:

getGreetings: function (req, res) {
    Greeting.findAll({

    }).then(function (data) {
        console.log('Returned data for greetings: ' + data);
        res.send({greetings:data});
    })
}

这是我的路线:

var Greeting = require('../models/greetings');
router.get('/', function(req, res) {
    res.render('index', function(){
        Greeting.getGreetings(req, res);
    });
});

和我的ejs表我想在以下位置显示数据:

 <tbody>          
    <% for(var i=0; i < greetings.length; i++) { %>
      <tr>
        <td><%= greetings[i].name %></td>
        <td><%= greetings[i].message %></td>
      </tr>
    <% } %>
 </tbody>

这不显示任何html,而是回显json数据。有人可以帮助解释为什么我的html表没有被填充吗?

1 个答案:

答案 0 :(得分:1)

  

而是回应json数据。

这是因为getGreetings()始终使用res.send()将其设置为响应:

res.send({greetings:data});

要向您的视图提供greetings,您必须在data locals内提供res.render('index', { greetings: data });

getGreetings

这两种方法互不配合。每个响应本身定义为res.render(),因此每个响应只能使用一个。

如果您修改return .findAll()创建的承诺getGreetings: function (req) { return Greeting.findAll({ // ... }); }

res.send()

然后,路由处理程序可以绑定它并决定如何使用结果本身 - 是否应该使用res.render()var Greeting = require('../models/greetings'); router.get('/', function(req, res) { Greeting.getGreetings(req).then(function (greetings) { res.render('index', { greetings: greetings }); }); });

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

void getValue(int [], int);//function prototype

int main()
{
    const int ARRAY_SIZE = 20;
    int numbers[ARRAY_SIZE];

    cout << fixed << showpoint << setprecision(1);

    //get ints from user
    getValue(numbers, ARRAY_SIZE);

    //I added this FOR loop.
    for (int i = 0; i < ARRAY_SIZE - 1; i++)
    {
        //I also added the [i] so that the number is outputted as well
        if (numbers[i] % 2 == 0)

            // if the integer when divided by 2 has no remainder then it's even.

            // and here as well
            cout << numbers[i] << " is even "
            << endl;
        else

            // the integer is odd

            cout << numbers[i] << " is odd "
            << endl;
    }
    return 0;

}

void getValue(int numbers[], int ARRAY_SIZE)
{
    //loop counter
    int index;

    //get each value
    for (index = 0; index <= ARRAY_SIZE - 1; index++)
    {
        cout << "Enter an integer " << (index + 1) << " : ";
        cin >> numbers[index];
    }
}